Probléme avec clé unique composée
Bonjour a tous
je montre dabord la structure de ma table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
CREATE TABLE MESINFORMATIONS (
LACLE INTEGER NOT NULL,
CHAMP1 VARCHAR(80) NOT NULL,
CHAMP2 VARCHAR(80),
CHAMP3 VARCHAR(80),
CHAMP4 VARCHAR(80),
CHAMP5 VARCHAR(80),
CHAMP6 VARCHAR(80),
PROJETCODE INTEGER NOT NULL,
EXOENCOURS VARCHAR(20) NOT NULL,
);
ALTER TABLE MESINFORMATIONS ADD PRIMARY KEY (LACLE); |
Ensuite la clé d'unicité :
Code:
1 2
|
ALTER TABLE MESINFORMATIONS ADD CONSTRAINT MACONTRAINTE UNIQUE (CHAMP1, PROJETCODE, EXOENCOURS); |
Ensuite une procédure qui met a jour ma table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
SET TERM ^ ;
CREATE OR ALTER PROCEDURE MAJRENOUV (
tatami1 varchar(80),
tatami2 varchar(20),
tatami3 varchar(80))
as
BEGIN
UPDATE mesinformations
SET
mesinformations.exoencours=:tatami2,
mesinformations.champ6=:tatami3
WHERE mesinformations.champ1=:tatami1 ;
/* SUSPEND;*/
END^ |
Lorsque pour la procédure j'insère les valeurs 4230 pour tatami 1, tata pour tatami3 , 2009-2010 pour tatami2 (au niveau de la procédure) voila le code d'erreur que j'ai :
Citation:
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint " MACONTRAINTE" on table "MESINFORMATIONS".
At procedure 'MAJRENOUV' line: 7, col: 3.
Apparemment ça s'apparente a une duplication de données ! le problème est pour cette ligne que je veux modifier j'ai la valeur : 4230, 18, 2010-2011 valeur unique au niveau de ma base. Donc j'ai 4230 et 18 qui se répète mais 2010-2011 est remplacé par 2009-2010 Normalement tout devrait passer :
Code:
1 2 3 4 5 6
|
UPDATE mesinformations
SET
mesinformations.exoencours='2009-2010',
mesinformations.champ6='tata'
WHERE mesinformations.champ1='4230'; |
:calim2: je n'arrive pas a comprendre.
Merci de m'aider