3

我一直在通过 Netbeans 在 Java Db 中创建外键时遇到问题。我很确定我必须使用 SQL 命令将 PLAYERS 表中的属性更改为外键,因为我只能通过界面指定主键。我试过执行这个命令:

ALTER TABLE PLAYERS ADD CONSTRAINT TEAMNUM_FK
Foreign Key (TEAMNUM) REFERENCES TEAM (TEAMNUM);

应该将 PLAYERS 表中的 TEAMNUM 添加/更改为与 TEAM 表中的主键相关的外键,以便 TEAMNUM 在两个表中保持一致,但它会给出错误:

错误代码 -1,SQL 状态 X0Y44:约束 'TEAMNUM_FK' 无效:表 '"APP"."TEAM"' 上没有与外键中列的数量和类型匹配的唯一键或主键约束。第 1 行,第 1 列

如果有人可以提供帮助,那就太好了。谢谢。

4

2 回答 2

2

错误信息很清楚:

没有为表定义主键TEAM,或者 PK 由不同的列组成,(teamnum)或者列的数据类型与表中teamnumPLAYERS的数据类型不匹配。teamnumteam

正如您已经展示了您的表定义,我无法判断错误消息解释的三个备选方案中的哪一个与您的情况相关。

于 2012-01-18T23:17:05.777 回答
2

这是正确的做法,在netbeans IDE中创建表后,选择表TEAM并右键单击外键并选择执行命令并粘贴下面的代码

Alter Table APP.PLAYERS
Add FOREIGN KEY (TEAMNUM_FK)
References APP.TEAM (TEAMNUM);   

接下来再次选择表团队并选择刷新

ps:假设APP是您的默认架构

于 2014-06-01T22:52:45.697 回答