1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| CREATE TRIGGER TR_IOF_I_ecrit_par
ON dbo.ecrit_par
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS
(
SELECT *
FROM dbo.ecrit_par AS EP
INNER JOIN inserted AS I
ON EP.ecrivain = I.ecrivain
INNER JOIN dbo.traducteur_ecrivain AS TE
ON EP.ecrivain = TE.ecrivain
INNER JOIN dbo.traduit_par AS TP
ON TP.ecrivain = TE.ecrivain
GROUP BY TE.ecrivain
HAVING COUNT(DISTINCT EP.oeuvre) > 2
AND COUNT(DISTINCT TP.livre) > 0
)
BEGIN
RAISERROR('Au moins un écrivain a déjà écrit plus de deux livre et traduit plus d''une oeuvre', 16, 1)
RETURN
END
ELSE
BEGIN
INSERT INTO dbo.ecrit_par
(
oeuvre
, ecrivain
)
SELECT oeuvre
, ecrivain
FROM inserted
END
END |