Bonjour. Je suis en train de créer une base de données en SQL pour m'entraîner, mais je n'ai pas bien compris comment marchais exactement les triggers. Je me suis quand même renseigné sur internet, mais je n'ai pas trouvé grand chose m'aidant assez. Je ne sais pas si vous pourrez m'aider, je vous laisse mes codes et mon objectif en dessous :
Voici mes tables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE AUTEUR ( NumAuteur INTEGER, NomAuteur VARCHAR(20), PRIMARY KEY (NumAuteur) );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE EDITEUR ( CodeEditeur INTEGER, RaisonSociale VARCHAR(50), PRIMARY KEY (CodeEditeur) );Et leur contenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE LIVRE ( NumLivre INTEGER, Titre VARCHAR(60), CodeEditeur INTEGER, PRIMARY KEY (NumLivre), FOREIGN KEY (CodeEditeur) REFERENCES EDITEUR(CodeEditeur) );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO AUTEUR (NumAuteur, NomAuteur) VALUES (1, 'TWAIN'), (2, 'ORWELL'), (3, 'VERNES'), (4, 'WELLS');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO EDITEUR (CodeEditeur, RaisonSociale) VALUES (11, 'Hachette Livre'), (12, 'Flammarion'), (13, 'Bayard'), (14, 'Atlas');--------------------------------------------------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO LIVRE (NumLivre, Titre, CodeEditeur) VALUES (11, '1984'), (12, 'Tom Sawyer'), (13, 'De la Terre à la Lune'), (12, 'La machine à remonter le temps');
Mon but est de créer un trigger qui remet la valeur NULL à la clé étrangère "CodeEditeur" de la table LIVRE lorsqu'un supprime cet éditeur dans la table EDITEUR.
> Je ne sais pas si c'est réellement possible, mais j'ai essayé quelques trucs que j'ai trouvé sur internet, et j'ai ce "bout de code" non complet et peut être même faux ?
Je ne sais pas si vous aurez bien compris ma question N'hésitez pas à me demandez plus de précisions si il manque des choses ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TRIGGER met_a_NULL ON EDITEUR AFTER DELETE AS BEGIN DELETE FROM EDITEUR CodeEditeur = NULL; END;
En tout cas je vous remercie d'avance !
Louis![]()
Partager