只需添加一个外键SQL

时间:2013-06-18 14:19:24

标签: sql oracle foreign-keys

我正在尝试向我的user_info表添加一个外键约束,这是我的users表(user_id)中的主键:

ALTER TABLE user_info
ADD CONSTRAINT fk_userID
FOREIGN KEY (user_id)
REFERENCES users(user_id);

但是,我收到了这个错误:

Error starting at line 26 in command:
ALTER TABLE user_info
ADD CONSTRAINT fk_userID
FOREIGN KEY (user_id)
REFERENCES users(user_id)
Error report:
SQL Error: ORA-02298: cannot validate (CLAYBANKS.FK_USERID) - parent keys not found
02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
*Cause:    an alter table validating constraint failed because the table has
           child records.
*Action:   Obvious

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

此错误表示user_id表中的user_info users表中没有UPDATE表。因此,不能应用外键。

您只需在null表中删除所有孤立记录(或users_infousers,如果可能),或在DELETE FROM user_info i WHERE user_id NOT IN (SELECT user_id FROM users) 表中添加相应的条目。在删除或更新它们之前尝试找到它们,以避免破坏重要数据。

例如:

UPDATE user_info SET user_id = NULL WHERE user_id NOT IN (SELECT user_id FROM users)

或者

{{1}}

答案 1 :(得分:0)

这是Oracle错误(ORA-XXXXX)。这意味着 USER_INFO 表格中的一行或多行在引用的表格中没有 USER_ID 字段,在您的情况下表格 USERS

您可以使用此请求检索未引用的ID:

SELECT ui.*
FROM USER_INFO ui
WHERE NOT EXISTS
(SELECT * FROM USERS u WHERE u.user_id = ui.user_id)