小编Mik*_*ick的帖子

SQL约束:两个属性,同一个表上至少有一个外键匹配

我有一张公司拥有的电话号码表和一个电话记录表.每个呼叫记录包括(非空)源和目的地号码.我被赋予了完整性约束,即源号或目的地号码(但不是两者)都可以是不在电话号码表中的号码(因为它们不是该公司拥有的号码).换句话说,我需要确保其中至少有一个是电话号码表的外键.

create table phonenumber (
    phonenum numeric(10,0) not null,
    primary key (phonenum)
);
create table call_record (
    URID varchar(20) not null,
    c_src numeric(10,0) not null,
    c_dst numeric(10,0) not null,
    primary key (URID)
);
Run Code Online (Sandbox Code Playgroud)

以下听起来像我想要的但不是有效的SQL:

constraint call_constraint check (
    foreign key (c_src) references phonenumber (phonenum) or
    foreign key (c_dst) references phonenumber (phonenum)
)
Run Code Online (Sandbox Code Playgroud)

有没有办法在DDL中指定它?如果没有,我将如何编写触发器来强制执行此操作?

sql oracle referential-integrity

5
推荐指数
1
解决办法
453
查看次数

标签 统计

oracle ×1

referential-integrity ×1

sql ×1