16 EYLÜL 2009, ÇARŞAMBA
Nasıl onun adını bilmeden SQL varsayılan kısıtlama bırakmak için?
Microsoft SQL Server, varsayılan kısıtlama sütun için mevcut olup olmadığını kontrol edin ve varsayılan kısıtlama bırakmak için sorgu olduğunu biliyorum:
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
Ancak veritabanı önceki sürümlerde yazım hatası nedeniyle, kısıtlamanın adı DF_SomeTable_ColName
DF_SmoeTable_ColName
olabilir.
Nasıl herhangi bir SQL hatasız varsayılan kısıtlama silebilir miyim? Varsayılan kısıtlama adları işleri biraz zorlaştırıyor. hangi tabloda görünmüyor.
Yani, bir şey 'varsayılan kısıtlamayı silmek bu tablo/sütun', veya 'sil DF_SmoeTable_ColName
', ama eğer onu bulabilirse. herhangi bir hata verme gibi.
CEVAP
16 EYLÜL 2009, ÇARŞAMBA
Mitch Buğday kod üzerinde genişleyen, aşağıdaki komut kısıtlaması düşmesi ve dinamik bir şekilde yürütmek oluşturur.
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
declare @Command nvarchar(1000)
set @table_name = N'Department'
set @col_name = N'ModifiedDate'
select @Command = 'ALTER TABLE ' @table_name ' drop constraint ' d.name
from sys.tables t
join sys.default_constraints d
on d.parent_object_id = t.object_id
join sys.columns c
on c.object_id = t.object_id
and c.column_id = d.parent_column_id
where t.name = @table_name
and c.name = @col_name
--print @Command
execute (@Command)
Bunu Paylaş:
Nasıl button in yeniden boyutlandırıla...
Nasıl no-ri-hayır-rdoc gem için varsay...
Nasıl bir iOS app adını değiştirmek iç...
Nasıl caps Visual Studio menü başlıkla...
Nasıl bir dize olarak adını aldığımda ...