Declanşator pentru ştergere în cascadă (echivalent cu ON DELETE CASCADE):
CREATE TABLE Localitate
(
CodLocalitate INT PRIMARY KEY,
Denumire VARCHAR(25) NOT NULL
)
GO
CREATE TABLE Telefon
(
NrTelefon VARCHAR(25) PRIMARY KEY NOT NULL,
CodLocalitate INT NOT NULL
REFERENCES Localitate(CodLocalitate)
--ON DELETE CASCADE --fara stergere in cascada
)
GO
INSERT INTO Localitate VALUES (1,'Bucuresti')
INSERT INTO Localitate VALUES (2,'Ploiesti')
GO
INSERT INTO Telefon VALUES ('3123219',1)
INSERT INTO Telefon VALUES ('4569567',1)
INSERT INTO Telefon VALUES ('8796674',1)
INSERT INTO Telefon VALUES ('111111',2)
INSERT INTO Telefon VALUES ('222222',2)
GO
CREATE TRIGGER StergereLocalitate
ON Localitate
INSTEAD OF DELETE
AS
DELETE Telefon
FROM Telefon INNER JOIN DELETED ON Telefon.CodLocalitate = DELETED.CodLocalitate
DELETE FROM Localitate
FROM Localitate INNER JOIN DELETED ON Localitate.CodLocalitate = DELETED.CodLocalitate
GO
--5 inregistrari
SELECT * FROM Telefon
GO
DELETE FROM Localitate WHERE Denumire = 'Ploiesti'
GO
--3 inregistrari
SELECT * FROM Telefon
GO