我正在尝试向我的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
有什么想法吗?
答案 0 :(得分:4)
此错误表示user_id
表中的user_info
users
表中没有UPDATE
表。因此,不能应用外键。
您只需在null
表中删除所有孤立记录(或users_info
到users
,如果可能),或在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)