Saya memiliki tabel yang tidak memiliki kolom dalam batasan kunci utamanya. Alih-alih mengeditnya melalui SQL Server, saya ingin memasukkan ini ke dalam skrip untuk menambahkannya sebagai bagian dari skrip pembaruan kami.
Sintaks apa yang dapat saya gunakan untuk melakukan ini? Haruskah saya melepaskan dan membuat ulang batasan utama?
sql-server
Jason
sumber
sumber
Jawaban:
Iya. Satu-satunya cara adalah menghilangkan batasan dengan tabel Alter lalu membuatnya kembali.
sumber
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
berfungsi di sinidb
.table
DROP KUNCI UTAMA, TAMBAHKAN KUNCI UTAMA (id1
,id2
);PRIMARY KEY CONSTRAINT
tidak dapat diubah, Anda hanya dapat melepaskannya dan membuat lagi. Untuk kumpulan data besar, ini dapat menyebabkan waktu jangka panjang dan dengan demikian - tabel tidak tersedia.sumber
Dari segi kinerja, tidak ada gunanya mempertahankan indeks yang tidak berkerumun selama ini karena mereka akan diperbarui ulang saat drop dan buat. Jika ini adalah kumpulan data besar, Anda harus mempertimbangkan untuk mengganti nama tabel (jika mungkin, pengaturan keamanan apa saja?), Membuat ulang tabel kosong dengan kunci yang benar, memigrasikan semua data di sana. Anda harus memastikan Anda memiliki cukup ruang untuk ini.
sumber
Dalam kasus saya, saya ingin menambahkan kolom ke kunci Primer (kolom4). Saya menggunakan skrip ini untuk menambahkan kolom4
sumber
Anda dapat mengganti nama objek kendala menggunakan sp_rename (seperti yang dijelaskan dalam jawaban ini )
sebagai contoh:
sumber