我有一张复制的表格:
CREATE TABLE d_clients_copy As SELECT * FROM d_clients;
仅复制数据结构和值,而不是约束。
所以我将主键添加到新创建的数据库中:
ALTER TABLE d_clients_copy
add CONSTRAINT client_number_pk
PRIMARY KEY (client_number);
现在我在新创建的表中有一个主键列。
我有一个包含事件的表,我正在尝试从c_clients_copy表中引用client_number。
ALTER TABLE d_events_copy
add CONSTRAINT client_number_fk
FOREIGN KEY (client_number)
REFERENCES d_clients_copy (client_number);
oracle会出现以下错误:
ORA-02298:无法验证... - 找不到父密钥。
哪一个是父母?我很困惑。
注意:每个表都包含数据。
答案 0 :(得分:2)
复制两个表时,可能会在发出选择之间发生更改。
默认情况下,第二个选择将不会选择与第一个选择同时的数据,因为Oracle的默认查询隔离级别是READ COMMITTED。
要更改此行为,您必须将会话的查询隔离级别修改为SERIALIZABLE:http://docs.oracle.com/cd/B28359_01/server.111/b28318/consist.htm#CNCPT1320