Message d'erreur SQL

Message d'erreur SQL - SQL/NoSQL - Programmation

Marsh Posté le 16-06-2004 à 13:51:36    

Voilà, mon doce de création des tables nécessaires
 
-- Creation de la table Interactions --
CREATE TABLE Interactions(
 Key_Int VARCHAR(10) PRIMARY KEY,
 Indice VARCHAR(30),   -- GI, NGAI, NGTI --
 Id INTEGER,
 Assertion VARCHAR(15),
 Regulation VARCHAR(15),
 Uncertainty VARCHAR(15),
 Selfcontained VARCHAR(15),
 Confidence VARCHAR(15)
);
 
CREATE TABLE GenicsInteractions(
 Type VARCHAR(50)
)INHERITS (Interactions);
 
CREATE SEQUENCE numInts
 START 1;
 
-- Creation de la table Certitude --
CREATE TABLE Certitudes(
 Key_cert VARCHAR(10) PRIMARY KEY,
 ShortFrag VARCHAR(100),
 LongFrag VARCHAR(100),
 
 Key_Int VARCHAR(10),
 
 FOREIGN KEY (Key_Int) REFERENCES Interactions (Key_Int)
);
 
Quand, je lance mon script Perl censé remplir mes tables, j'ai cette erreur: "ERROR:  $1 referential integrity violation - key referenced from certitudes not found in interactions"
 
Je ne comprend pas, je souhaite mettre à jour une instance de la table Certitudes en mettant la clé étrangère key_int correspondant à la valeur courante de la séquence (= à 1), sachant qu'il y a bien une instance de la table Intéraction d'enregistrer avec une clé primaire égale à 1.
 
Merci de votre aide par avance  :)

Reply

Marsh Posté le 16-06-2004 à 13:51:36   

Reply

Marsh Posté le 16-06-2004 à 16:33:30    

tu travail avec quoi comme SGBD ?
 
Deja tu devrais séparé tes scripts de création de tables et création de contraintes ...
 
pour les séquences va voir la :
http://www.commentcamarche.net/oracle/oracseq.php3
 
ou la :
 
http://www.techonthenet.com/oracle/index.htm
 
et puis fais voir ton script qui remplit tes tables

Reply

Marsh Posté le 18-06-2004 à 10:53:47    

Je travaille sous PostgreSQL.
J'ai un peu mieux ciblé mon problème
 
Mes tables
 

Code :
  1. CREATE TABLE Interactions(
  2. Key_Int VARCHAR(10) PRIMARY KEY,
  3. Indice VARCHAR(30)
  4. );
  5. CREATE TABLE GenicsInteractions(
  6. Type VARCHAR(50)
  7. )INHERITS (Interactions);
  8. -- Creation de la table Certitude --
  9. CREATE TABLE Certitudes(
  10. Key_cert VARCHAR(10) PRIMARY KEY,
  11. Frag VARCHAR(100),
  12. Key_Int VARCHAR(10),
  13. FOREIGN KEY (Key_Int) REFERENCES Interactions (Key_Int)
  14. );


 
Après la création d'une instance "GenicsInteractions" avec '1' comme clé primaire, je ne peux pas faire:
 

Code :
  1. INSERT INTO Certitudes (key_cert, Frag, Key_Int)
  2. VALUES ('1', '1');


 
ERROR:  $1 referential integrity violation - key referenced from certitudes not found in interactions
 
Par contre si je crée une instance "Interactions", il n'y a aucun problème. Mon problèmes vient donc de l'héritage. Faut-il ajouter une contrainte à la clé étrangère "key_int" dans la table "Certitudes" du fait que cette clé puisse provenir de t table "Interactions" ou "GenicsInteractions"
 
Merci d'avance.

Reply

Marsh Posté le 18-06-2004 à 10:55:56    

 INSERT INTO Certitudes (key_cert, Frag, Key_Int)
  VALUES ('1', '1');


 
tu a 3 champ défini, mais tu n'insere que 2 valeurs

Reply

Marsh Posté le 18-06-2004 à 10:59:25    

Erreur de retransciption, désolée
 
Ca ne marche pas, même si l'on met
 
INSERT INTO Certitudes (key_cert, Frag, Key_Int)
VALUES ('1', 'Toto', '1');

Reply

Marsh Posté le 18-06-2004 à 11:00:18    

frag est bien un char?

Reply

Marsh Posté le 18-06-2004 à 11:04:09    

Oui, après de nombreux essai, je me suis aperçue que le problème était au niveau de "key_int"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed