2016-03-28 10 views
0

Bir kısıtlama adı bildiğim ancak bir tablonun adını bilmediğim bir durum var. Kısıtlamayı, bulunduğu tablodan bağımsız olarak, adına dayanarak bulup daraltan bir komut dosyası yazmak istiyorum. Benim sorunum, bu sadece tablo adını bildiğini varsayan tablo tablo ifadelerinde çalıştığı görünmektedir. Bunu kullanarak bir sınırlamayı bulabilirsiniz:Dinamik Olarak Seçili Tabloda T-SQL Bırak Kısıtlaması

SELECT * 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_NAME='constraint_name' 

ve benim sonuçlarında ne olursa olsun tablo değiştirebilir ve kısıt sağlanmaktadır tablo bilgisi kullanmak istiyorum.

ne istiyorum

Sözde kod:

alter table (select top 1* TABLE_NAME from 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_NAME='constraint_name') drop constraint 'constraint_name' 
Sen ** ** değişkenlere masa ve kısıt adını seçin ve sonra bir şekilde yürütmek istiyoruz T-SQL deyimi oluşturmak gerek
+0

'nvarchar' dize, dinamik olarak, T-SQL'de ve sonra' sp_executesql' kullanarak bu ifadeyi yürütür –

cevap

1
declare @constraint varchar(255) 
declare @tbalename varchar(255) 

declare @tbalename=select table_name from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE [email protected] 

declare @sql nvarchar(max) 

set @sql='ALTER TABLE '[email protected] +'DROP CONSTRAINT '+ @constraint ; 

exec(@SQL) 
İlgili konular