SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amena

    Amena

    15 Kasım 2006
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008
  • SignatureSeries

    SignatureSer

    24 Aralık 2006