Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2007, 20h54   #1
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 162
Points : 36
Points : 36
Par défaut trigger pour tester une clé primaire

Bonjour,

J'ai un fichier de plus de 700000 lignes, et je voudrais tester si une combinaison de champs est une clé primaire ou non.
Je souhaite faire cela à l'aide d'un trigger se déclenchant lors de l'insertion.

Je veux que la ligne, si elle existe déjà, soit quand même copiée dans ma table, mais en être informé.

Je ne sais pas trop comment m'y prendre, dois-je déclarer ma clé primaire comme étant la combinaison que j'imagine, auquel cas la ligne ne sera pas copiée, ou alors dois-je faire un select sur ma table where les champs de ma combinaison correspondent, ce qui risque d'être très long...


Merci de votre aide

keum
__________________
Qui osera affronter ma brute??
Si tu perds, rejoins mon clan
keumlebarbare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 03h00   #2
Invité régulier
 
Inscription : août 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 7
Points : 7
Points : 7
pour quoi vous ne créez pas la clé primaire avec la combinaison des champs que vous pensez que c'est la clé jusque vous trouvez la combinaison correcte ? par exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
SQL> CREATE TABLE test(col1 number, col2 number, col3 number);
 
TABLE created.
 
SQL> INSERT INTO test
  2  SELECT rownum, rownum +1, rownum +2 FROM dual connect BY rownum <=5;
 
5 rows created.
 
SQL> INSERT INTO test 
  2  SELECT rownum,rownum +1, rownum +7 FROM dual connect BY rownum <=5;
 
5 rows created.
 
SQL>  ALTER TABLE test ADD constraint pk_test PRIMARY KEY(col1);
 ALTER TABLE test ADD constraint pk_test PRIMARY KEY(col1)
                                 *
ERROR at line 1:
ORA-02437: cannot validate (SCOTT.PK_TEST) - PRIMARY KEY violated
 
 
SQL> ALTER TABLE test ADD constraint pk_test PRIMARY KEY(col1,col2);
ALTER TABLE test ADD constraint pk_test PRIMARY KEY(col1,col2)
                                *
ERROR at line 1:
ORA-02437: cannot validate (SCOTT.PK_TEST) - PRIMARY KEY violated
 
 
SQL> ALTER TABLE test ADD constraint pk_test PRIMARY KEY(col1,col2,col3);
 
TABLE altered.
 
SQL> INSERT INTO test VALUES(1,2,4);
 
1 row created.
 
SQL> INSERT INTO test VALUES (1,2,4);
INSERT INTO test VALUES (1,2,4)
*
ERROR at line 1:
ORA-00001: UNIQUE constraint (SCOTT.PK_TEST) violated
denunez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 08h06   #3
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Le plus simple et le plus propre est de
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 10h29   #4
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 162
Points : 36
Points : 36
Merci beaucoup pour ton aide, c'est le genre de réponse que j'attendais

merci encore

keum
__________________
Qui osera affronter ma brute??
Si tu perds, rejoins mon clan
keumlebarbare est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h38.


 
 
 
 
Partenaires

Hébergement Web