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)
有任何想法吗?
此错误意味着user_id
您的user_info
表中有s不存在于users
表中。因此不能应用外键。
您只需要删除表中的所有孤立记录(如果可能的话,或者删除UPDATE
它们null
)users_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)
归档时间: |
|
查看次数: |
11272 次 |
最近记录: |