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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?