DROP ForeignKey con popolazione di Codice SQL
Questo script, a me molto utile, permette d'estrapolare
tutte le ForeignKey del mio Database e di popolare in un colpo solo
tutte le istruzioni DROP che riguardano queste ForeignKey :
USE [NomeDatabase]
-- Creazione Vista ForeignKey contenente l'elenco delle Foreign Key del nostro Database
CREATE VIEW ForeignKey AS
SELECT cast(f.name AS Varchar(255)) AS Nome_ForeignKey
, r.keycnt
, cast(c.name AS Varchar(255)) AS Foreign_Table
, cast(fc.name AS Varchar(255)) AS Foreign_Column_1
, cast(fc2.name AS Varchar(255)) AS Foreign_Column_2
, cast(p.name AS Varchar(255)) AS Primary_Table
, cast(rc.name AS Varchar(255)) AS Primary_Column_1
, cast(rc2.name AS Varchar(255)) AS Primary_Column_2
FROM sysobjects f
INNER JOIN sysobjects c On f.parent_obj = c.idINNER JOIN sysreferences r On f.id = r.constid
INNER JOIN sysobjects p On r.rkeyid = p.idINNER JOIN syscolumns rc On r.rkeyid = rc.id And r.rkey1 = rc.colid
INNER JOIN syscolumns fc On r.fkeyid = fc.id And r.fkey1 = fc.colidLEFT JOIN syscolumns rc2 On r.rkeyid = rc2.id And r.rkey2 = rc.colid
LEFT JOIN syscolumns fc2 On r.fkeyid = fc2.id And r.fkey2 = fc.colid
WHERE f.type = 'F'
-- Select che popola l'istruzione di DROP ForeignKey
SELECT
'if exists (select * from dbo.sysobjects where id =
object_id(N''[dbo].['+ Nome_ForeignKey + ']'') and OBJECTPROPERTY(id, N''IsForeignKey'') = 1)
ALTER TABLE [dbo].['
+ Foreign_Table + '] DROP CONSTRAINT ' + Nome_ForeignKey
FROM ForeignKey ORDER BY Foreign_Table
Buona Giornata!