只需添加一个外键SQL

use*_*666 3 sql oracle foreign-keys

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

ALTER TABLE user_info
ADD CONSTRAINT fk_userID
FOREIGN KEY (user_id)
REFERENCES users(user_id);
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

xle*_*ier 5

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

您只需要删除表中的所有孤立记录(如果可能的话,或者删除UPDATE它们nullusers_info,或者在表中添加相应的条目users。在删除或更新它们之前尝试找到它们,以避免破坏重要数据。

例如:

DELETE FROM user_info i WHERE user_id NOT IN (SELECT user_id FROM users)
Run Code Online (Sandbox Code Playgroud)

或者

UPDATE user_info SET user_id = NULL WHERE user_id NOT IN (SELECT user_id FROM users)
Run Code Online (Sandbox Code Playgroud)