SQL Server’da Seçili Veritabanındaki Tüm Primary Keyleri Kaldıran Cursor
Herkese merhaba,
Bu yazıda sizlere SQL Server’da seçili veritabanındaki tüm Primary Keylerin Cursor yardımıyla kaldırılması hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda tüm primary keyleri kaldırma ihtiyacınız olabilir.
Aşağıdaki sorguyu kullanarak bu işlemi tek seferde çözebilirsiniz.
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 = 'PRIMARY 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 = 'PRIMARY 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 'Kaldırılan Primary Key Constraintler : ' + @constraint + ' on ' + @name;
SELECT @constraint =
(
SELECT TOP 1
CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_CATALOG = DB_NAME()
AND CONSTRAINT_TYPE = 'PRIMARY 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 = 'PRIMARY KEY'
ORDER BY TABLE_NAME
);
END;
Sorguyu çalıştırdığınız zaman aşağıdaki gibi bir çıktı göreceksiniz.
Görüldüğü üzere tüm foreign keyler kaldırılmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.