2013-09-25 2 views
2

Je travaille avec apache derby jdbc (dans netbeans 7.2.1) Je veux créer une table avec clé primaire composite (de sorte que seule la composition de ces 4 colonnes valeurs est unique, et la valeur de chacun d'eux séparément sont pas uniques)définition de clé primaire composite n'agit pas en tant que composite dans jdbc

Create table MovieScreens(
NameM varchar(255) NOT NULL UNIQUE, 
DateS DATE NOT NULL UNIQUE, 
Hall NUMERIC NOT NULL UNIQUE, 
HourS NUMERIC NOT NULL UNIQUE, 
SEATSFREE varchar (500) NOT NULL, 
FOREIGN KEY (Hall) REFERENCES Halls(Hall), 
FOREIGN KEY (NameM) REFERENCES MoviesDetails(NAMEM), 
**primary key (NameM , DateS,Hall,HourS)** 
) 

Mais il semble chacune des colonnes définies comme clé primaire clé primaire est par lui-même, et ne faisant pas partie de la clé composite. Lorsque je tente d'insérer des lignes qui ne diffèrent que par une de ces valeurs, j'obtiens l'erreur:

Error code -1, SQL state 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index . 

Comme je comprends NetBeans utilise la base de données MySQL, et cela devrait être la bonne syntaxe pour MySQL, ou je me trompe?

Toute contribution serait appréciée, merci!

Répondre

5

Vous définissez les champs composant votre clé primaire comme UNIQUE afin que chacun d'eux ne puisse pas avoir deux fois la même valeur. Supprimez cette contrainte et gardez simplement la déclaration de clé primaire. D'ailleurs, votre problème est uniquement lié au SQL pur. L'utilisation de JDBC n'a aucun impact là-dessus.

+0

Merci! C'était en effet le problème – qwerty

+1

@qwerty Vous êtes les bienvenus. Vous pouvez ensuite marquer la réponse comme acceptée afin que les personnes ayant le même problème puissent facilement voir qu'il y a une réponse qui fonctionne. –

Questions connexes