我正在使用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的正确语法,还是我错了?
任何意见都将不胜感激,谢谢!
答案 0 :(得分:5)
您将组成主键的字段设置为UNIQUE
,因此每个字段的值不能超过两倍。删除此约束并保留主键声明。
顺便说一下,你的问题只与纯SQL有关。使用JDBC对此没有影响。