Bonjour a tous
je montre dabord la structure de ma table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ALTER TABLE MESINFORMATIONS ADD CONSTRAINT MACONTRAINTE UNIQUE (CHAMP1, PROJETCODE, EXOENCOURS);
Ensuite une procédure qui met a jour ma table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
UPDATE mesinformations
  SET
  mesinformations.exoencours='2009-2010',
  mesinformations.champ6='tata'
  WHERE mesinformations.champ1='4230';
je n'arrive pas a comprendre.

Merci de m'aider