c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe
deja !!!
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe
deja !!!
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe
deja !!!
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
Pour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
Pour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
Pour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'exis te
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'e xiste pas
deja !!!
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'exis te
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'e xiste pas
deja !!!
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'exis te
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'e xiste pas
deja !!!
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
hum.
c'est ce que je fais actuellement.Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
oui en passant par une transaction on peux aussi s'en sortir, mais j'aurai
autant que possible souhaité éviter de baser ma solution sur un message
d'erreurPour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
Ouai le tigger ca marche, mais c'est trop dépendant du SGBD ;)
Merci en tout cas.
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
hum.
c'est ce que je fais actuellement.
Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
oui en passant par une transaction on peux aussi s'en sortir, mais j'aurai
autant que possible souhaité éviter de baser ma solution sur un message
d'erreur
Pour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
Ouai le tigger ca marche, mais c'est trop dépendant du SGBD ;)
Merci en tout cas.
Solution 1 : Faire la vérification prélablement avec le langage que tu
utilises, si c'est possible (je ne connais pas l'environnement dans lequel
tu bosses)
hum.
c'est ce que je fais actuellement.Solution 2 : Mettre un index unique sur le champ lien, si un meme
enregistrement existe déjà, tu aura un erreur 1062, (si tu es sous MySql),
et l'enregistrement ne pourra pas
avoir lieu.
oui en passant par une transaction on peux aussi s'en sortir, mais j'aurai
autant que possible souhaité éviter de baser ma solution sur un message
d'erreurPour ajouter la condition en SQL je crains qu'il ne faille passer par un
trigger ou autre chose de la sorte, mais cela sans certitude aucune.
A confirmer donc
Ouai le tigger ca marche, mais c'est trop dépendant du SGBD ;)
Merci en tout cas.
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
Dans mon nouveau bouquin :
http://www.pearsoneducation.fr/espace/livre.asp?idEspaceu&idLivre#10&dep=0
http://www.amazon.fr/exec/obidos/ASIN/2744070955/
je donne cet exercice là :
Exercice 10
Enoncé :
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne
n'existe pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous
requête compte le nombre de ligne qui comporte les mêmes données que
celle à insérer. Si le nombre de ligne contenant les mêmes données est
supérieur à zéro, alors la ligne existe déjà. Dans ce cas, il convient
que la sous requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Pour certains SGBDR, on peut utiliser le NOT EXIST qui sera sans doute
plus optimisé :
Solution pour Oracle
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
Oracle utilise une pseudo table de nom DUAL qui sert à remplir la clause
FROM sans préciser un objet réellement existant (table ou vue).
Solution pour MS SQL Server :
INSERT INTO T_TEST
SELECT 1, 'NORD'
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
L'écriture pour SQL Server est encore plus sobre, car ce SGBDR ne
requiert pas obligatoirement de clause FROM pour exécuter une telle
requête.
A toi de t'en inspirer !
A +
Etienne SOBOLE a écrit:c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée
n'existe pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée
n'existe pas deja !!!
merci
Etienne
Dans mon nouveau bouquin :
http://www.pearsoneducation.fr/espace/livre.asp?idEspaceu&idLivre#10&dep=0
http://www.amazon.fr/exec/obidos/ASIN/2744070955/
je donne cet exercice là :
Exercice 10
Enoncé :
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne
n'existe pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous
requête compte le nombre de ligne qui comporte les mêmes données que
celle à insérer. Si le nombre de ligne contenant les mêmes données est
supérieur à zéro, alors la ligne existe déjà. Dans ce cas, il convient
que la sous requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Pour certains SGBDR, on peut utiliser le NOT EXIST qui sera sans doute
plus optimisé :
Solution pour Oracle
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
Oracle utilise une pseudo table de nom DUAL qui sert à remplir la clause
FROM sans préciser un objet réellement existant (table ou vue).
Solution pour MS SQL Server :
INSERT INTO T_TEST
SELECT 1, 'NORD'
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
L'écriture pour SQL Server est encore plus sobre, car ce SGBDR ne
requiert pas obligatoirement de clause FROM pour exécuter une telle
requête.
A toi de t'en inspirer !
A +
Etienne SOBOLE a écrit:
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée
n'existe pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée
n'existe pas deja !!!
merci
Etienne
Dans mon nouveau bouquin :
http://www.pearsoneducation.fr/espace/livre.asp?idEspaceu&idLivre#10&dep=0
http://www.amazon.fr/exec/obidos/ASIN/2744070955/
je donne cet exercice là :
Exercice 10
Enoncé :
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne
n'existe pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous
requête compte le nombre de ligne qui comporte les mêmes données que
celle à insérer. Si le nombre de ligne contenant les mêmes données est
supérieur à zéro, alors la ligne existe déjà. Dans ce cas, il convient
que la sous requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Pour certains SGBDR, on peut utiliser le NOT EXIST qui sera sans doute
plus optimisé :
Solution pour Oracle
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
Oracle utilise une pseudo table de nom DUAL qui sert à remplir la clause
FROM sans préciser un objet réellement existant (table ou vue).
Solution pour MS SQL Server :
INSERT INTO T_TEST
SELECT 1, 'NORD'
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD')
L'écriture pour SQL Server est encore plus sobre, car ce SGBDR ne
requiert pas obligatoirement de clause FROM pour exécuter une telle
requête.
A toi de t'en inspirer !
A +
Etienne SOBOLE a écrit:c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée
n'existe pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée
n'existe pas deja !!!
merci
Etienne
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne n'existe
pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous requête
compte le nombre de ligne qui comporte les mêmes données que celle à
insérer. Si le nombre de ligne contenant les mêmes données est supérieur à
zéro, alors la ligne existe déjà. Dans ce cas, il convient que la sous
requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne n'existe
pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous requête
compte le nombre de ligne qui comporte les mêmes données que celle à
insérer. Si le nombre de ligne contenant les mêmes données est supérieur à
zéro, alors la ligne existe déjà. Dans ce cas, il convient que la sous
requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Soit la table T_TEST (COL1 INT, COL2 CHAR(4)), contenant les données
suivantes :
COL1 COL2
------ ------
1 NORD
3 SUD
Ecrivez une requête permettant d'insérer une ligne si cette ligne n'existe
pas déjà dans la table.
Solution :
Le principe est de faire un INSERT avec une sous requête. La sous requête
compte le nombre de ligne qui comporte les mêmes données que celle à
insérer. Si le nombre de ligne contenant les mêmes données est supérieur à
zéro, alors la ligne existe déjà. Dans ce cas, il convient que la sous
requête ne retourne rien :
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
HAVING COUNT(*) < 1
Ainsi le tuple ne sera inséré que si les données n'existe pas.
Avec certaines versions d'oracle (je n'ai pas encore testé la 10g), il est
plus performant d'ajouter un test sur le rownum
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
AND ROWNUM < 1)
Avec certaines versions d'oracle (je n'ai pas encore testé la 10g), il est
plus performant d'ajouter un test sur le rownum
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
AND ROWNUM < 1)
Avec certaines versions d'oracle (je n'ai pas encore testé la 10g), il est
plus performant d'ajouter un test sur le rownum
INSERT INTO T_TEST
SELECT 1, 'NORD'
FROM DUAL
WHERE NOT EXISTS (SELECT *
FROM T_TEST
WHERE COL1 = 1
AND COL2 = 'NORD'
AND ROWNUM < 1)
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne
c'est possible de faire un insert dans une table sous condition?
j'ai un table qui relie un contact a une société
et je voudrai faire l'insertion dans cette table que si l'entrée n'existe
pas deja !
genre
INSERT INTO lien WHERE idsoc = 5 AND idctc = 9 .... if l'entrée n'existe pas
deja !!!
merci
Etienne