SQL'de yükseltme ve geri alma komut dosyaları oluşturmaya çalışıyorum.SQL Server neden bir DF kısıtlaması oluşturmaya devam ediyor?
IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName'
AND object_id = OBJECT_ID(N'[dbo].[TableName]'))
ALTER TABLE TableName
ADD ColumnName bit NOT NULL DEFAULT(0)
backout komut şöyle sütunu kaldırır: yükseltme komut bir sütun şöyle ekler
Msg 5074, Level 16, State 1, Line 5
The object 'DF__TableName__ColumnName__1BF3D5BD' is dependent on column 'ColumnName'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE DROP COLUMN ColumnName failed because one or more objects access this column.
biliyorum: Ancak
IF EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName'
AND object_id = OBJECT_ID(N'[dbo].[TableName]'))
ALTER TABLE TableName
DROP COLUMN ColumnName
, backout komut bu hatayı atar Kısıtlama nasıl bırakılır, ancak kısıtlamanın adı her zaman değişir (sonek değişir). Bu rasgele adlandırılmış kısıtlamayı oluşturmayı durdurmak için SQL Server'a ihtiyacım var VEYA isim değiştirdiğinden, joker karakterleri kullanarak betiğimde kısıtlamayı kaldırabilmem gerekiyor.
+1. –
Teşekkürler Martin. Ayrıca, kısıtlamanın mevcut olup olmadığını doğru bir şekilde kontrol etmek için (düşmeden önce), ** [burada] açıklanan yöntemi kullandım (http://stackoverflow.com/questions/2499332/how-to-check-if-a-constraint- var-in-sql-sunucu/6839547 # 6839547) ** – WEFX
@ ÁlvaroG.Vicario - evet. Martin'in cevabı size bir örnek veriyor. –