ELIMINARE UNA RELAZIONE CON SCRIPT DA SQL SERVER 2005

venerdì 07 marzo 2008 - 11.11

MarcodotnetHell Profilo | Junior Member

io dovrei creare uno script T-SQL per poter eliminare una relazione dalla mia base dati in SQL SERVER. Qualcuno mi potrebbe aiutare. Anzi voorei anceh sapere prima se esiste e poi eventualmente eliminarla.
GRazzie mille anticipatamente per il vostro interessamento.

alx_81 Profilo | Guru

>io dovrei creare uno script T-SQL per poter eliminare una relazione
>dalla mia base dati in SQL SERVER. Qualcuno mi potrebbe aiutare.
>Anzi voorei anceh sapere prima se esiste e poi eventualmente
>eliminarla.
Ciao!

Allora, le foreign key stanno all'interno di una catalog view chiamata sys.foreign_keys. Inoltre puoi anche interrogare lo schema INFORMATION_SCHEMA, tabella TABLE_CONSTRAINT, filtrando per CONSTRAINT_TYPE = 'FOREIGN KEY':

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Qui di seguito uno script di esempio. Ho utilizzato la sys.foreign_keys:
USE tempdb; GO CREATE TABLE dbo.Testata ( id int NOT NULL , descrizione varchar(50) NOT NULL , data datetime DEFAULT(GETDATE()) , CONSTRAINT PK_Testata PRIMARY KEY CLUSTERED ( id ) ) GO INSERT INTO dbo.Testata (id, descrizione) VALUES (1, 'PROVA 1') INSERT INTO dbo.Testata (id, descrizione) VALUES (2, 'PROVA 2') INSERT INTO dbo.Testata (id, descrizione) VALUES (3, 'PROVA 3') INSERT INTO dbo.Testata (id, descrizione) VALUES (4, 'PROVA 4') INSERT INTO dbo.Testata (id, descrizione) VALUES (5, 'PROVA 5') GO CREATE TABLE dbo.Dettaglio ( id int NOT NULL , idriga int NOT NULL , importo decimal(10,2) NOT NULL , causale varchar(30) NOT NULL , CONSTRAINT PK_Dettaglio PRIMARY KEY CLUSTERED ( id , idriga ) ) GO INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (1, 1, 10, 'CAUSALE 1') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (1, 2, 20, 'CAUSALE 1') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (2, 1, 100, 'CAUSALE 2') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (2, 2, 200, 'CAUSALE 2') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (2, 3, 300, 'CAUSALE 3') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (3, 1, 5, 'CAUSALE 3') INSERT INTO dbo.Dettaglio (id, idriga, importo, causale) VALUES (4, 1, 50, 'CAUSALE 3') GO ALTER TABLE dbo.Dettaglio ADD CONSTRAINT FK_Testata_Dettaglio FOREIGN KEY(id) REFERENCES dbo.Testata (id) GO -- Foreign key creata. SELECT [name] FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'FK_Testata_Dettaglio') /* name ------------------------------ FK_Testata_Dettaglio */ -- Ecco come dropparla, se esiste: IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'FK_Testata_Dettaglio')) ALTER TABLE dbo.Dettaglio DROP CONSTRAINT FK_Testata_Dettaglio GO -- Foreign key eliminata SELECT [name] FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'FK_Testata_Dettaglio') /* name ------------------------------ */ DROP TABLE dbo.dettaglio DROP TABLE dbo.testata GO
>GRazzie mille anticipatamente per il vostro interessamento.
di nulla!

Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5