5 oracle
我创建了两个表
create table ref1(id varchar2(3) primary key);
create table ref2(id varchar2(3) primary key);
Run Code Online (Sandbox Code Playgroud)
现在我想为 ref1.id 和 ref2.id 创建一个单列作为外键的第三个表
create table actual(p varchar2(3) );
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
小智 14
你可以试试这个:
CREATE TABLE ref1
(
id VARCHAR2(3) PRIMARY KEY
);
CREATE TABLE ref2
(
id VARCHAR2(3) PRIMARY KEY
);
CREATE TABLE look
(
p VARCHAR2(3),
CONSTRAINT fk_p_ref1 FOREIGN KEY (p) REFERENCES ref1(id),
CONSTRAINT fk_p_ref2 FOREIGN KEY (p) REFERENCES ref2(id)
);
Run Code Online (Sandbox Code Playgroud)
在 10G R2 服务器上进行了测试,没有投诉(目前)。
编辑:
简单测试结果:
SQL> insert into ref1 (id) values ('abc');
1 row created.
SQL> insert into ref2 (id) values ('def');
1 row created.
SQL> insert into look (p) values ('abc');
insert into look (p) values ('abc')
*
ERROR at line 1:
ORA-02291: integrity constraint (LINEQZ.FK_P_REF2) violated - parent key not
found
SQL> insert into ref2 (id) values ('abc');
1 row created.
SQL> insert into look (p) values ('abc');
1 row created.
Run Code Online (Sandbox Code Playgroud)