[SQL Server] Supprimer et créer un foreign key sur une table SQL Server
-- compatible sql server 2019
-- Remplacez 'NomDeLaTable' par le nom de votre table
-- Remplacez 'NomDeLaCléEtrangère' par le nom de votre clé étrangère
DECLARE @tableName NVARCHAR(128) = 'NomDeLaTable';
DECLARE @foreignKeyName NVARCHAR(128) = 'NomDeLaCléEtrangère';
DECLARE @dropScript NVARCHAR(MAX);
DECLARE @createScript NVARCHAR(MAX);
-- Génère le script pour supprimer la clé étrangère
SELECT @dropScript = 'ALTER TABLE ' + QUOTENAME(@tableName) + ' DROP CONSTRAINT ' + QUOTENAME(@foreignKeyName) + ';';
-- Génère le script pour recréer la clé étrangère
SELECT @createScript =
'ALTER TABLE ' + QUOTENAME(@tableName) +
' ADD CONSTRAINT ' + QUOTENAME(@foreignKeyName) +
' FOREIGN KEY (' + COL_NAME(fk.parent_object_id, fk.parent_column_id) + ')' +
' REFERENCES ' + OBJECT_NAME(fk.referenced_object_id) +
'(' + COL_NAME(fk.referenced_object_id, fk.referenced_column_id) + ');'
FROM sys.foreign_keys fk
JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fk.name = @foreignKeyName;
-- Affiche les scripts générés
PRINT 'Script pour supprimer la clé étrangère :';
PRINT @dropScript;
PRINT 'Script pour recréer la clé étrangère :';
PRINT @createScript;
--Compatible SQL Server 2017
-- Remplacez 'NomDeLaTable' et 'NomDeLaCléEtrangère' par vos valeurs
DECLARE @tableName NVARCHAR(128) = 'NomDeLaTable';
DECLARE @foreignKeyName NVARCHAR(128) = 'NomDeLaCléEtrangère';
DECLARE @dropScript NVARCHAR(MAX);
DECLARE @createScript NVARCHAR(MAX);
-- Script pour supprimer la clé étrangère
SELECT @dropScript =
'ALTER TABLE ' + QUOTENAME(@tableName) +
' DROP CONSTRAINT ' + QUOTENAME(@foreignKeyName) + ';';
-- Script pour recréer la clé étrangère
SELECT @createScript =
'ALTER TABLE ' + QUOTENAME(@tableName) +
' ADD CONSTRAINT ' + QUOTENAME(@foreignKeyName) +
' FOREIGN KEY (' + COL_NAME(fkc.parent_object_id, fkc.parent_column_id) + ')' +
' REFERENCES ' + OBJECT_NAME(fkc.referenced_object_id) +
'(' + COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) + ');'
FROM sys.foreign_keys fk
JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id
WHERE fk.name = @foreignKeyName;
-- Affiche les scripts générés
PRINT '-- Script pour supprimer la clé étrangère :';
PRINT @dropScript;
PRINT '-- Script pour recréer la clé étrangère :';
PRINT @createScript;