คำถามติดแท็ก alter-table

"ALTER TABLE" คือคำสั่ง SQL ที่ช่วยให้คุณสามารถทำการเปลี่ยนแปลงสคีมาในตารางฐานข้อมูล (เช่นเพิ่มวางหรือแก้ไขคอลัมน์จากตารางที่มีอยู่)

19
แก้ไขคอลัมน์ MySQL ให้เป็น AUTO_INCREMENT
ฉันกำลังพยายามปรับเปลี่ยนตารางเพื่อสร้างคอลัมน์คีย์หลักAUTO_INCREMENTหลังจากข้อเท็จจริง ฉันลอง SQL ต่อไปนี้ แต่ได้รับการแจ้งเตือนข้อผิดพลาดทางไวยากรณ์ ALTER TABLE document ALTER COLUMN document_id AUTO_INCREMENT ฉันกำลังทำอะไรผิดหรือเป็นไปไม่ได้? + -------------------- + | VERSION () | + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
194 sql  mysql  alter-table 

6
เปลี่ยนคอลัมน์เพิ่มข้อ จำกัด เริ่มต้น
ฉันมีตารางและหนึ่งในคอลัมน์คือ "วันที่" ประเภทวันที่และเวลา เราตัดสินใจเพิ่มข้อ จำกัด เริ่มต้นในคอลัมน์นั้น Alter table TableName alter column dbo.TableName.Date default getutcdate() แต่สิ่งนี้ทำให้ฉันมีข้อผิดพลาด: ไวยากรณ์ไม่ถูกต้องใกล้กับ '.' ไม่มีใครเห็นอะไรผิดปกติอย่างชัดเจนที่นี่ซึ่งฉันหายไป (นอกจากชื่อคอลัมน์ที่ดีกว่า)

4
ฉันสามารถสร้างข้อ จำกัด เริ่มต้นที่มีชื่อในคำสั่งเพิ่มคอลัมน์ใน SQL Server ได้หรือไม่
ใน SQL Server ฉันมีคอลัมน์ใหม่ในตาราง: ALTER TABLE t_tableName ADD newColumn NOT NULL สิ่งนี้ล้มเหลวเนื่องจากฉันระบุ NOT NULL โดยไม่ระบุข้อ จำกัด เริ่มต้น ตารางไม่ควรมีข้อ จำกัด เริ่มต้น ในการหลีกเลี่ยงปัญหานี้ฉันสามารถสร้างตารางด้วยข้อ จำกัด เริ่มต้นแล้วลบออก อย่างไรก็ตามไม่มีวิธีใดที่จะระบุว่าข้อ จำกัด เริ่มต้นควรตั้งชื่อเป็นส่วนหนึ่งของคำสั่งนี้ดังนั้นวิธีเดียวที่ฉันจะกำจัดมันคือการมีขั้นตอนการจัดเก็บที่ค้นหาใน sys.default_constraints ตาราง. นี่เป็นสิ่งที่ยุ่งเล็กน้อย / verbose สำหรับการดำเนินการที่มีแนวโน้มที่จะเกิดขึ้นมากมาย ไม่มีใครมีวิธีแก้ปัญหาที่ดีกว่านี้?

4
ตารางแก้ไข sqlite เพิ่มคอลัมน์หลายรายการในคำสั่งเดียว
เป็นไปได้หรือไม่ที่จะแก้ไขตารางที่เพิ่มคอลัมน์หลายคอลัมน์ในคำสั่งเดี่ยวใน sqlite ต่อไปนี้จะไม่ทำงาน แก้ไขการทดสอบตารางเพิ่มข้อความคอลัมน์ mycolumn1 เพิ่มข้อความคอลัมน์ mycolumn2;
159 sql  sqlite  alter-table 

7
ฉันจะเพิ่มสมาชิกในคอลัมน์ประเภท ENUM ของฉันใน MySQL ได้อย่างไร
คู่มืออ้างอิง MySQL ไม่มีตัวอย่างชัดเจนเกี่ยวกับวิธีการทำเช่นนี้ ฉันมีคอลัมน์ประเภท ENUM ของชื่อประเทศที่ฉันต้องการเพิ่มประเทศอื่น ๆ ไวยากรณ์ MySQL ที่ถูกต้องเพื่อให้บรรลุคืออะไร? นี่คือความพยายามของฉัน: ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia'); ข้อผิดพลาดที่ฉันได้รับคือ: ERROR 1265 (01000): Data truncated for column 'country' at row 1. countryคอลัมน์เป็น ENUM ชนิดคอลัมน์ในข้างต้นคำสั่ง แสดงผลลัพธ์ของตาราง : mysql> SHOW CREATE TABLE carmake; +---------+---------------------------------------------------------------------+ | Table | Create Table +---------+---------------------------------------------------------------------+ | carmake | …
157 mysql  enums  alter-table 

3
จะเปลี่ยนนิยามคอลัมน์ MySQL ได้อย่างไร
ฉันมีตาราง mySQL ที่เรียกว่าการทดสอบ: create table test( locationExpect varchar(120) NOT NULL; ); ฉันต้องการเปลี่ยนคอลัมน์ locationExpect เป็น: create table test( locationExpect varchar(120); ); มันสามารถทำได้อย่างรวดเร็ว?
156 mysql  alter-table 

9
Postgresql - เปลี่ยนขนาดของคอลัมน์ varchar ให้มีความยาวต่ำกว่า
ฉันมีคำถามเกี่ยวกับALTER TABLEคำสั่งบนตารางที่มีขนาดใหญ่มาก (เกือบ 30 ล้านแถว) หนึ่งในคอลัมน์ที่เป็นและฉันต้องการที่จะปรับขนาดไปvarchar(255) varchar(40)โดยทั่วไปฉันต้องการเปลี่ยนคอลัมน์ของฉันโดยเรียกใช้คำสั่งต่อไปนี้: ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40); ฉันไม่มีปัญหาหากกระบวนการมีความยาวมาก แต่ดูเหมือนว่าตารางของฉันจะไม่สามารถอ่านได้มากขึ้นในระหว่างคำสั่ง ALTER TABLE มีวิธีที่ฉลาดกว่านี้ไหม? อาจเพิ่มคอลัมน์ใหม่คัดลอกค่าจากคอลัมน์เก่าวางคอลัมน์เก่าแล้วเปลี่ยนชื่อใหม่ในที่สุด? เบาะแสใด ๆ จะได้รับการชื่นชมอย่างมาก! ขอบคุณล่วงหน้า, หมายเหตุ: ฉันใช้ PostgreSQL 9.0

7
แทรกคอลัมน์ NOT NULL ลงในตารางที่มีอยู่
ฉันเหนื่อย: ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL; แต่ให้ข้อความแสดงข้อผิดพลาดนี้: ALTER TABLE อนุญาตให้เพิ่มคอลัมน์ที่สามารถมีค่าว่างหรือมีการกำหนดค่าเริ่มต้นที่ระบุไว้เท่านั้น


5
แก้ไขตาราง MySQL เพื่อเพิ่มความคิดเห็นในคอลัมน์
ฉันได้ตรวจสอบเอกสาร MySQL สำหรับ ALTER TABLEแล้วและดูเหมือนจะไม่มีวิธีเพิ่มหรือแก้ไขความคิดเห็นในคอลัมน์ ฉันจะทำเช่นนี้ได้อย่างไร? -- for table ALTER TABLE myTable COMMENT 'Hello World' -- for columns -- ???
110 mysql  alter-table 

1
จะเปลี่ยนประเภทข้อมูลของคอลัมน์ในตาราง PostgreSQL ได้อย่างไร
การป้อนคำสั่งต่อไปนี้ในเทอร์มินัลแบบโต้ตอบ PostgreSQL ทำให้เกิดข้อผิดพลาด: ALTER TABLE tbl_name ALTER COLUMN col_name varchar (11); คำสั่งที่ถูกต้องในการเปลี่ยนแปลงชนิดข้อมูลของคอลัมน์คืออะไร?

19
แก้ไขตารางโดยไม่ล็อคโต๊ะ?
เมื่อทำคำสั่ง ALTER TABLE ใน MySQL ตารางทั้งหมดจะถูกล็อคการอ่าน (อนุญาตให้อ่านพร้อมกัน แต่ห้ามการเขียนพร้อมกัน) ในช่วงระยะเวลาของคำสั่ง หากเป็นตารางขนาดใหญ่คำสั่ง INSERT หรือ UPDATE อาจถูกบล็อกเป็นเวลานาน มีวิธีการ "แก้ไขด่วน" เช่นการเพิ่มคอลัมน์ในลักษณะที่ตารางยังคงสามารถอัปเดตได้ตลอดกระบวนการหรือไม่ ส่วนใหญ่ฉันสนใจโซลูชันสำหรับ MySQL แต่ฉันสนใจ RDBMS อื่น ๆ หาก MySQL ไม่สามารถทำได้ เพื่อชี้แจงวัตถุประสงค์ของฉันคือเพียงเพื่อหลีกเลี่ยงการหยุดทำงานเมื่อคุณลักษณะใหม่ที่ต้องใช้คอลัมน์ตารางพิเศษถูกผลักไปที่การผลิต สคีมาฐานข้อมูลใด ๆจะเปลี่ยนไปตามกาลเวลานั่นเป็นเพียงความจริงของชีวิต ฉันไม่เห็นเหตุผลที่เราควรยอมรับว่าการเปลี่ยนแปลงเหล่านี้จะต้องส่งผลให้เกิดการหยุดทำงานอย่างหลีกเลี่ยงไม่ได้ นั่นเป็นเพียงความอ่อนแอ
107 sql  mysql  ddl  alter-table 

4
สร้างดัชนีบนตารางการผลิต MySQL ขนาดใหญ่โดยไม่ต้องล็อกตาราง
ฉันต้องการสร้างดัชนีบนตาราง MySQL ~ 5M แถว มันเป็นตารางการผลิตและฉันกลัวว่าทุกอย่างจะสมบูรณ์แบบถ้าฉันเรียกใช้คำสั่ง CREATE INDEX ... มีวิธีสร้างดัชนีโดยไม่ปิดกั้นการแทรกและเลือกหรือไม่? แค่สงสัยว่าฉันยังไม่หยุดสร้างดัชนีและรีสตาร์ทระบบของฉัน!

14
แก้ไขตารางเพิ่มคอลัมน์หากไม่มีอยู่ใน SQLite
เมื่อเร็ว ๆ นี้เราจำเป็นต้องเพิ่มคอลัมน์ลงในตารางฐานข้อมูล SQLite ที่มีอยู่ของเรา ซึ่งสามารถทำได้ด้วยALTER TABLE ADD COLUMN. แน่นอนว่าหากตารางได้รับการเปลี่ยนแปลงแล้วเราต้องการที่จะปล่อยให้มันอยู่คนเดียว ขออภัย SQLite ไม่สนับสนุนIF NOT EXISTSอนุประโยคบนALTER TABLEข้อบน วิธีแก้ปัญหาปัจจุบันของเราคือดำเนินการคำสั่ง ALTER TABLE และละเว้นข้อผิดพลาด "ชื่อคอลัมน์ที่ซ้ำกัน" เช่นเดียวกับตัวอย่าง Python นี้ (แต่ใน C ++) อย่างไรก็ตามแนวทางปกติของเราในการตั้งค่าสกีมาฐานข้อมูลคือการมีสคริปต์. sql ที่มีCREATE TABLE IF NOT EXISTSและCREATE INDEX IF NOT EXISTSคำสั่งซึ่งสามารถดำเนินการได้โดยใช้sqlite3_execหรือsqlite3เครื่องมือบรรทัดคำสั่ง เราไม่สามารถใส่ALTER TABLEไฟล์สคริปต์เหล่านี้ได้เนื่องจากหากคำสั่งนั้นล้มเหลวจะไม่มีการดำเนินการใด ๆ หลังจากนั้น ฉันต้องการกำหนดตารางในที่เดียวและไม่แยกระหว่างไฟล์. sql และ. cpp มีวิธีการเขียนวิธีแก้ปัญหาALTER TABLE ADD COLUMN …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.