3

我正在尝试向我的 user_info 表添加一个外键约束,这是我的用户表 (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

有任何想法吗?

4

2 回答 2

6

此错误意味着您的表中有不存在于表中user_id的 s 。因此不能应用外键。user_infousers

您只需删除表中的所有孤立记录(或如果可能的话),或在UPDATE表中添加相应的条目。尝试在删除或更新它们之前找到它们,以避免破坏重要数据。nullusers_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)
于 2013-06-18T14:27:24.673 回答
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)
于 2013-06-18T14:31:25.000 回答