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

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • knopik96

    knopik96

    7 Mayıs 2011
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007