Bonsoir,
Curieux intellectuellement, j'ai essayé un truc
NB. Je ne suis pas sûr pour la partie clé étrangère
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
20
21
22 -- -- Fichier généré par SQLiteStudio v3.2.1 sur sam. mars 23 19:15:05 2019 -- -- Encodage texte utilisé : System -- PRAGMA foreign_keys = off; BEGIN TRANSACTION; -- Table : CLIENT CREATE TABLE CLIENT (ID INTEGER PRIMARY KEY AUTOINCREMENT, NOM TEXT (30), IDVILLE BIGINT, TEMPCDP TEXT, TEMPVILLE TEXT, FOREIGN KEY (IDVILLE) REFERENCES VILLES (ID) DEFERRABLE INITIALLY DEFERRED); -- Table : VILLES CREATE TABLE VILLES (ID INTEGER PRIMARY KEY AUTOINCREMENT, CDP TEXT (5), VILLE TEXT (30) CONSTRAINT VILLE UNIQUE ON CONFLICT IGNORE NOT NULL); -- Déclencheur : NEWCLIENT CREATE TRIGGER NEWCLIENT AFTER INSERT ON CLIENT WHEN NEW.IDVILLE IS NULL BEGIN INSERT OR IGNORE INTO VILLES (CDP, VILLE) VALUES (NEW.TEMPCDP, NEW.TEMPVILLE); UPDATE CLIENT SET IDVILLE = (SELECT ID FROM VILLES WHERE CDP = NEW.TEMPCDP AND VILLE = NEW.TEMPVILLE) WHERE ID = NEW.ID; END; -- Déclencheur : UPDATECLIENT CREATE TRIGGER UPDATECLIENT AFTER UPDATE ON CLIENT WHEN NEW.TEMPCDP IS NOT NULL OR NEW.TEMPVILLE IS NOT NULL BEGIN UPDATE CLIENT SET TEMPCDP = NULL, TEMPVILLE = NULL WHERE ID = NEW.ID; END; COMMIT TRANSACTION; PRAGMA foreign_keys = on;
Me donne bien le souhaité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO CLIENT (ID, NOM, IDVILLE, TEMPCDP, TEMPVILLE) VALUES (NULL, 'TOTO',NULL, '44115','HG'); INSERT INTO CLIENT (ID, NOM, IDVILLE, TEMPCDP, TEMPVILLE) VALUES (NULL, 'QINQUIN',NULL,'51','CHTI'); INSERT INTO CLIENT (ID, NOM, IDVILLE, TEMPCDP, TEMPVILLE) VALUES (NULL, 'TITI', NULL,'75','PARIS');
Cela dit je n'ai pas fait tous les tests possiblesCLIENT
1 TOTO 1
2 QUINQUIN 2
3 TITI 3
VILLES
1 44115 HG
2 51 CHTI
3 75 PARIS
Partager