je ne comprend pas tout,

sur une table existante sans ID unique, je veux lui en ajouté un

grosso modo je fais ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
ALTER TABLE test ADD pk INTEGER NOT NULL;
 
CREATE GENERATOR g_test;
 
COMMIT;
 
UPDATE test SET pk = GEN_ID(g_test, 1);
 
ALTER TABLE test ADD CONSTRAINT test_pk
  PRIMARY KEY (pk);
mais la dernière ligne me donne ceci quand je commit (tout le reste passe, j'ai bien des ID, rien de null)

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
17
18
19
20
21
22
 
Executing...
Done.
1240 fetches, 14 marks, 24 reads, 0 writes.
3 inserts, 1 updates, 0 deletes, 147 index, 235 seq.
Delta memory: 101932 bytes.
RDB$INDEX_SEGMENTS: 1 inserts. 
RDB$INDICES: 1 inserts. 
RDB$RELATIONS: 1 updates. 
RDB$RELATION_CONSTRAINTS: 1 inserts. 
Total execution time: 0.061s
Script execution finished.
Commiting transaction...
*** IBPP::SQLException ***
Context: Transaction::Commit
 
SQL Message : -625
The insert failed because a column definition includes validation constraints.
 
Engine Code    : 335544347
Engine Message :
validation error for column pk, value "*** null ***"
je ne comprend vraiment pas d'où ça vient

il existait une contrainte sur un champ LIBELLE qui servait de clé unique mais je l'ai supprimée

il existe 3 triggers mais ceux-ci alimentent simplement une table de log sans rapport

EDIT: j'ai ajouté le code avant le Commit, j'ai supprimé les triggers ça ne change rien, et je peux créer une clé unique sur le champ NOT NULL, mais je ne peux en faire la clé primaire...qui n'existe plus...bizarre non ?

j'ai trouvé une erreur similaire ici