salut a tous ,
je veux inserer des lignes dans une table et rejeté automatiqument les doublants , pour ne pas générer l'exception de la clé primaire
est ce qu'il ya une option dans le insert qui permet ca ?
Version imprimable
salut a tous ,
je veux inserer des lignes dans une table et rejeté automatiqument les doublants , pour ne pas générer l'exception de la clé primaire
est ce qu'il ya une option dans le insert qui permet ca ?
Je te donne une réponse que j'ai trouvée dans ce forum:cry:
Imaginons que ta table s'appelle FACTUTRE
1) Tu crées une table qui contiendra les enregistrements erronés
Alter table Log_FACTURE(.....) à l'identique de FACTURE
2) Tu lances l'activations des logs sur cette table :
exec dbms_errlog.create_error_log('Log_Facture')
3) Tu fais tes inserts dans la table FACTURE de cette façon :
insert into t(x,y) values ('1','x') log errors reject limit unlimited
4) Tous les enregistrements erronés se trouveront dans err$_Log_FACTURE
select * from err$_Log_FACTURE
Pour cela,il faut que tu sois en 10gr2 au minimum
Merci.
LBO72
:koi: cette solution ne s'applique pas au cas présent il me semble... l'idéal c'est un peut-être :
Code:INSERT INTO latable SELECT... FROM ... WHERE NOT EXISTS (SELECT ... FROM latable ...)
ou sinon en PL/SQL, on peut catcher l'exception, à condition bien sur qu'il y ait une cle primaire definie
Je confirme la reponse d'orafrance.. not exist et not in sont les meilleures solution dans ce cas.. Et surtout on dit "doublons", et pas doublant..:roll:
Non, il veut pas générer cette exception car dans ce cas l'insert s'arrête (et rollbacke)Citation:
Envoyé par tchoimars
Citation:
Envoyé par orafrance
il y a assez peu d'indication de l'auteur pour savoir quelle est la solution idéale.
Si l'auteur employe des
Alors log errors pourrait être d'un bon secours. Bien sûr il eût été mieux qu'il nous donne sa version :oops:Code:
1
2
3
4 insert into t(x,y) values ('1','x') log errors reject limit unlimited; insert into t(x,y) values ('2','x') log errors reject limit unlimited; insert into t(x,y) values ('2','x') log errors reject limit unlimited;
Attention log errors ne marche pas dans tous les cas. Par exemple, il faut que les contraintes soient IMMEDIATE