Bonjour,
J'essaie de comprendre une astuce permettant l'insertion uniquement si la clé primaire est absente (afin de ne pas déclencher l'inévitable erreur de clé dupliquée).
Dans l'exemple donné sur ce post, il est bien précisé de faire le "WHERE NOT EXISTS" sur une table bidon :
Effectivement, si on utilise matable au lieu de tablebidon:
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 INSERT INTO matable ( maclefprimaire , maclefetrangere , monattribut ) SELECT 1 , 1 , 'valeurtexte' FROM tablebidon WHERE NOT EXISTS ( SELECT 0 FROM matable WHERE maclefprimaire = 1 ) ;
... on obtient une erreur de clé dupliquée si la clé en question n'est pas présente (par contre, cela fonctionne bien si la clé est présente).
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 INSERT INTO matable ( maclefprimaire , maclefetrangere , monattribut ) SELECT 1 , 1 , 'valeurtexte' FROM matable WHERE NOT EXISTS ( SELECT 0 FROM matable WHERE maclefprimaire = 1 ) ;
Pourquoi ?![]()
Partager