ตารางแก้ไข sqlite เพิ่มคอลัมน์หลายรายการในคำสั่งเดียว


159

เป็นไปได้หรือไม่ที่จะแก้ไขตารางที่เพิ่มคอลัมน์หลายคอลัมน์ในคำสั่งเดี่ยวใน sqlite ต่อไปนี้จะไม่ทำงาน

แก้ไขการทดสอบตารางเพิ่มข้อความคอลัมน์ mycolumn1 เพิ่มข้อความคอลัมน์ mycolumn2;

คำตอบ:


311

ไม่คุณต้องเพิ่มครั้งละหนึ่งรายการ ดูแผนภาพไวยากรณ์ที่ด้านบนของเอกสาร ALTER TABLEของSQLite :

แก้ไขตารางไวยากรณ์

ไม่มีการวนซ้ำในADDสาขาดังนั้นจึงไม่อนุญาตให้ทำซ้ำ


12
@JoshPinter: ขอบคุณ แต่ฉันคิดว่าไดอะแกรมไวยากรณ์ในเอกสาร SQLite สมควรได้รับเครดิตจำนวนมากแผนภาพไวยากรณ์นั้นยอดเยี่ยมมากทุกคนควรใช้เอกสารเหล่านี้ในเอกสารของพวกเขา
mu สั้นเกินไป

คำตอบนี้เป็นประโยชน์จริงๆ ขอบคุณ.
Julian Alberto

0

คำตอบจาก @mu สั้นเกินไป 'ถูกต้อง ในฐานะที่เป็นพิเศษให้เพิ่มวิธีการแก้ปัญหาที่ดีที่สุดสำหรับการเพิ่มหลายคอลัมน์โดยใช้ประโยชน์ของการทำธุรกรรมใน SQL

String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN ";
List<String> newColumns = ..// Your new columns

db.beginTransaction();
for (String column : newColumns){
    db.execSQL(alterTableQuery + column +  " VARCHAR");
}
db.setTransactionSuccessful();
db.endTransaction();

ฉันหวังว่านี่จะช่วยให้ใครบางคน


0

สิ่งเดียวที่เป็นไปได้ที่ฉันใช้คือ

BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT

โปรดทราบว่ามี; โดยมีวัตถุประสงค์เพื่อทำให้แบบสอบถามสามารถอ่านได้หลายบรรทัด

จากนั้นฉันเรียกใช้คิวรีนี้และรับหลายคอลัมน์ที่เพิ่มเข้ามาเมื่อรัน ... ดังนั้นไม่ได้อยู่ในหนึ่งบรรทัด แต่ก็ใช่ในหนึ่งคิวรีที่เป็นไปได้


-16

แก้ไขการทดสอบตารางเพิ่มข้อความคอลัมน์ mycolumn1; แก้ไขการทดสอบตารางเพิ่มข้อความคอลัมน์ mycolumn2;

ใช้ข้อความค้นหาที่กำหนดใหม่ด้านบน


6
นั่นไม่ใช่คำสั่งเดียว - สิ่งใดก็ตาม;ที่เป็นตัวคั่นต้องถูกเรียกใช้เป็นคำสั่งหลาย ๆ คำสั่งและมักจะมีความสำคัญ คำตอบอื่น ๆ แสดงให้เห็นแล้วว่าสิ่งที่ OP กำลังขอนั้นเป็นไปไม่ได้
o11c
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.