Herkese merhaba,
Bu yazıda SQL Server’da foreign key constraintleri toplu olarak silmek hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda veritabanındaki foreign key constraintleri toplu olarak silmek isteyebiliriz.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
DECLARE @name VARCHAR(128); DECLARE @constraint VARCHAR(254); DECLARE @SQL VARCHAR(254); SELECT @name = ( SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog = DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME ); WHILE @name IS NOT NULL BEGIN SELECT @constraint = ( SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog = DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME ); WHILE @constraint IS NOT NULL BEGIN SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) + '] DROP CONSTRAINT [' + RTRIM(@constraint) + ']'; EXEC (@SQL); PRINT ' Foreign Key Constraint Silindi : ' + @constraint + ' Tablo Adı ' + @name; SELECT @constraint = ( SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog = DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME ); END; SELECT @name = ( SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog = DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME ); END; GO |
Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Görüldüğü üzere tüm foreign key constraintler silinmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
