TRIGGER de type "for insert,update"
BOnjour,
J'ai créé un déclencheur qui porte à la fois sur l'insertion et la mise à jour dans une table qui porte la contrainte de clé étarngère suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| alter table "Employe"
add constraint "Service_Employe_FK1" foreign key (
"code_service")
references "Service" (
"code_service") on update no action on delete no action
CREATE TRIGGER trEmploye
ON Employe
FOR INSERT,UPDATE
AS
IF UPDATE(code_service)
BEGIN
DECLARE @newCodeService NVARCHAR(6)
SELECT @newCodeService = (SELECT code_service FROM Inserted)
IF NOT EXISTS(SELECT code_service FROM Service WHERE Service.code_service=@newCodeService)
INSERT INTO Service
VALUES (@newCodeService, @newCodeService, NULL)
COMMIT
END; |
En tentant une insertion sur la table 'Employe', avec une valeur de 'code_service' non référencée dans la table 'Service', j'obtiens le message d'erreur suivant :
Code:
1 2
| Msg 547, Level 16, State 0, Line 2
L'instruction INSERT est en conflit avec la contrainte FOREIGN KEY 'Service_Employe_FK1'. Le conflit s'est produit dans la base de données 'BDD_Absences', table 'dbo.Service', column 'code_service'. |
Comment remédier à cela ?
DECLENCHEUR pour "insert,update"
Salut à tous,
Alors je me rends compte que le type de trigger ne permet pas de réaliser ce que je veux.
PAr contre un déclencheur de type "INSTEAD OF INSERT" et d'autre part un "INSTEAD OF UPDATE" permettent de réaliser ca, la syntaxe est très explicite et on a deux déclencheurs déclarés séparément.
A bientôt pour de nouvelles aventures !
Sam ;