2

我正在使用 apache derby jdbc(在 netbeans 7.2.1 中)我想创建具有复合主键的表(这样只有这 4 列值的组合是唯一的,并且它们中的每一个的值分别是不唯一的)

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)**
)

但似乎定义为主键的每一列本身就是主键,而不是复合键的一部分。当我尝试插入仅与这些值之一不同的行时,出现错误:

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 .

据我了解,netbeans 使用 MySQL 数据库,这应该是 MySQL 的正确语法,还是我错了?

任何输入将不胜感激,谢谢!

4

1 回答 1

5

您设置组成主键的字段,UNIQUE以便它们中的每一个不能具有相同的值的两倍。删除此约束并仅保留主键声明。

顺便说一句,您的问题仅与纯SQL有关。使用JDBC对此没有影响。

于 2013-09-25T06:18:35.697 回答