SORU
24 Kasım 2008, PAZARTESİ


SQL Server 2005 kısıtlamaları ile sütun bırakın

Bir "" kısıtlama. VARSAYILAN bir sütun var Bu sütun damla bir komut dosyası oluşturmak istiyorum.

Sorun bu hata döndürür

Msg 5074, Level 16, State 1, Line 1  
The object 'DF__PeriodSce__IsClo__4BCC3ABA' is dependent on column 'IsClosed'. 
Msg 4922, Level 16, State 9, Line 1 
ALTER TABLE DROP COLUMN IsClosed failed because one or more objects access this column.

Bir sütun ve ilgili kısıtlamaları bırakmak için kolay bir yol bulamadım (yok, sadece sistem tablosuna bak bu büyük komut buldum... (!!) ""bunu yapmak için bir yol.) güzel bir

Ve VARSAYILAN kısıtlama adı rasgele oluşturulmuş olduğu gibi, adı unutamam.


Güncelleme:
Kısıtlama türü "VARSAYILAN".

Size önerilen tüm çözümler gördüm ama hepsini gerçekten buldum ""... değil mi?pis Eğer Oracle ya da MySQL var mı bilmiyorum ama olası bir şey gibi yapmak

DROP COLUMN xxx CASCADE CONSTRAINTS 

Ve ilgili tüm kısıtlamaları düşer... Ya da en azından otomatik olarak kısıtlamaları sütun (en az kısıtlamaları KONTROL edin!) eşleştirilmiş damla

Hiçbir şey MSSQL böyle var mı?

CEVAP
23 Temmuz 2009, PERŞEMBE


Burada varsayılan kısıtlama ile birlikte sütunu siler bir senaryo. MYTABLENAME MYCOLUMNNAME uygun şekilde değiştirin.

declare @constraint_name sysname, @sql nvarchar(max)

select @constraint_name = name 
from sys.default_constraints 
where parent_object_id = object_id('MYTABLENAME')
AND type = 'D'
AND parent_column_id = (
    select column_id 
    from sys.columns 
    where object_id = object_id('MYTABLENAME')
    and name = 'MYCOLUMNNAME'
    )

set @sql = N'alter table MYTABLENAME drop constraint '   @constraint_name
exec sp_executesql @sql

alter table MYTABLENAME drop column MYCOLUMNNAME

go

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • boogie2988

    boogie2988

    6 NİSAN 2006
  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009