ฉันมีตารางที่ไม่มีคอลัมน์ในข้อ จำกัด คีย์หลัก แทนที่จะแก้ไขผ่าน SQL Server ฉันต้องการใส่สิ่งนี้ในสคริปต์เพื่อเพิ่มเป็นส่วนหนึ่งของสคริปต์อัพเดตของเรา
ฉันสามารถใช้ไวยากรณ์อะไรเพื่อทำสิ่งนี้ ฉันต้องปล่อยและสร้างข้อ จำกัด ของคีย์ใหม่หรือไม่?
ฉันมีตารางที่ไม่มีคอลัมน์ในข้อ จำกัด คีย์หลัก แทนที่จะแก้ไขผ่าน SQL Server ฉันต้องการใส่สิ่งนี้ในสคริปต์เพื่อเพิ่มเป็นส่วนหนึ่งของสคริปต์อัพเดตของเรา
ฉันสามารถใช้ไวยากรณ์อะไรเพื่อทำสิ่งนี้ ฉันต้องปล่อยและสร้างข้อ จำกัด ของคีย์ใหม่หรือไม่?
คำตอบ:
ใช่. วิธีเดียวก็คือการวางข้อ จำกัด ด้วยตาราง Alter แล้วสร้างขึ้นใหม่
ALTER TABLE <Table_Name>
DROP CONSTRAINT <constraint_name>
ALTER TABLE <Table_Name>
ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>)
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187ก็ทำงานที่นี่
dbเปลี่ยนแปลงตาราง table วางคีย์หลักเพิ่มคีย์หลัก ( id1, id2);
PRIMARY KEY CONSTRAINTไม่สามารถเปลี่ยนแปลงได้คุณสามารถวางและสร้างใหม่ได้เท่านั้น สำหรับชุดข้อมูลขนาดใหญ่อาจทำให้ใช้งานได้นานและทำให้ไม่สามารถใช้งานตารางได้
ประสิทธิภาพที่ชาญฉลาดไม่มีจุดที่จะเก็บดัชนีที่ไม่ใช่คลัสเตอร์ในระหว่างนี้เนื่องจากจะได้รับการอัปเดตใหม่เมื่อปล่อยและสร้าง หากเป็นชุดข้อมูลขนาดใหญ่คุณควรพิจารณาเปลี่ยนชื่อตาราง (ถ้าเป็นไปได้การตั้งค่าความปลอดภัยบนตารางนั้นหรือไม่) สร้างตารางว่างขึ้นมาใหม่โดยใช้คีย์ที่ถูกต้องจะย้ายข้อมูลทั้งหมดไปที่นั่น คุณต้องแน่ใจว่าคุณมีพื้นที่เพียงพอสำหรับสิ่งนี้
ในกรณีของฉันฉันต้องการเพิ่มคอลัมน์ในคีย์หลัก (คอลัมน์ 4) ฉันใช้สคริปต์นี้เพื่อเพิ่มคอลัมน์ 4
ALTER TABLE TableA
DROP CONSTRAINT [PK_TableA]
ALTER TABLE TableA
ADD CONSTRAINT [PK_TableA] PRIMARY KEY (
[column1] ASC,
[column2] ASC,
[column3] ASC,
[column4] ASC
)
คุณสามารถเปลี่ยนชื่อวัตถุข้อ จำกัด โดยใช้ sp_rename (ตามที่อธิบายไว้ในคำตอบนี้ )
ตัวอย่างเช่น:
EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint'