Di Microsoft SQL Server, saya tahu permintaan untuk memeriksa apakah ada kendala default untuk kolom dan drop kendala standar adalah:
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Tetapi karena kesalahan ketik pada versi sebelumnya dari database, nama batasannya bisa DF_SomeTable_ColName
atau DF_SmoeTable_ColName
.
Bagaimana saya bisa menghapus batasan default tanpa kesalahan SQL? Nama batasan default tidak muncul di tabel INFORMATION_SCHEMA, yang membuat segalanya sedikit lebih rumit.
Jadi, sesuatu seperti 'hapus batasan default di tabel / kolom ini', atau 'hapus DF_SmoeTable_ColName
', tetapi jangan memberikan kesalahan jika tidak dapat menemukannya.
sql
sql-server
tsql
Robo
sumber
sumber
Jawaban:
Memperluas kode Mitch Wheat, skrip berikut akan menghasilkan perintah untuk menghilangkan batasan dan menjalankannya secara dinamis.
sumber
Posting blog Rob Farley mungkin bisa membantu:
Sesuatu seperti:
sumber
Saya menemukan bahwa ini berfungsi dan tidak menggunakan gabungan:
Pastikan saja columnName tidak memiliki tanda kurung di sekitarnya karena kueri mencari kecocokan yang tepat dan tidak akan mengembalikan apa pun jika itu adalah [nama kolom].
sumber
IF @ObjectName IS NOT NULL
sebelum perintah EXEC[default_object_id])
adalah 0 . Saya mendapatkan nilai NULL .Untuk menghapus batasan untuk beberapa kolom:
sumber
Solusi yang diperluas (memperhitungkan skema tabel):
sumber
Jatuhkan semua kendala default dalam database - aman untuk ambang nvarchar (maks).
sumber
Jalankan perintah ini untuk menelusuri semua kendala:
Ini akan terlihat seperti ini:
DF__Mytable__Column__[ABC123]
. Kemudian Anda bisa menghilangkan batasannya.sumber
exec sp_helpconstraint 'Roles2016.UsersCRM'
Saya harap ini bisa bermanfaat bagi mereka yang memiliki masalah serupa. Di
ObjectExplorer
jendela, pilih database Anda => Tabel, => tabel Anda => Kendala. Jika pelanggan didefinisikan saat membuat kolom, Anda dapat melihat nama standar batasan termasuk nama kolom. lalu gunakan:(nama kendala hanyalah sebuah contoh)
sumber
Solusi berikut ini akan menghilangkan batasan default spesifik kolom dari tabel
sumber
Saya memiliki beberapa kolom yang memiliki beberapa batasan default yang dibuat, jadi saya membuat prosedur tersimpan berikut:
sumber
Berguna untuk beberapa kolom yang telah banyak
default constraints or check constraints
dibuat:Skrip https://stackoverflow.com/a/16359095/206730 yang dimodifikasi
sumber
Selalu buat skrip dan tinjau sebelum Anda menjalankan. Di bawah skrip
sumber
sumber
Lihatlah.
sumber