Bonjour,
voici mon problème
Je n'ai pas de séquences et je voudrai insérer une ligne dans ma table en incrémentant la valeur de c1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create table aa_toto (c1 number primary key, c2 varchar2(30)); insert into aa_toto values (1,'aaaaaaa'); commit;
je fais ça:
Par contre je souhaiterais pouvoir insérer seulement si le champ c2 que je veux insérer n'existe pas déjà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 insert into aa_toto SELECT NVL(MAX(c1),0)+1, 'bbbbbbb' from aa_toto
Et là mon insertion plante car il essai quand même d'insérer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 insert into aa_toto SELECT NVL(MAX(c1),0)+1, 'aaaaaaa' from aa_toto WHERE NOT EXISTS(SELECT 1 FROM aa_toto where c2 = 'aaaaaaa')
En effet la requête suivante me retourne 1 :
Moi je voudrais que si le champ c2 qu'on veut insérer existe déjà il ne m'insère rien du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT NVL(MAX(c1),0)+1 from aa_toto WHERE NOT EXISTS(SELECT 1 FROM aa_toto where c2 = 'aaaaaaa')
Je veux une solution purement SQL.
Pas la peine de me dire de créer une séquence.
merci de votre aide
Partager