如果重要的话,这在 Oracle 中实现。
我了解如何使用复合主键为表构建外键。是否可以让外键引用具有复合主键的表,其中一个键值具有静态值?
想象一下,我想要一个状态代码表。我可以很容易地为每个目的创建一个状态代码表(即一个用于 ThingStatus,一个用于 OtherThingStatus,等等)。微不足道,但会导致很多小桌子。我也可以有一个包含所有状态代码的表,每个记录还标识状态代码适用于什么(如下所示)。
create table StatusCode (
StatusTable varchar2(20) not null,
StatusValue varchar2(20) not null
);
alter table StatusCode add constraint pkStatusCode primary key (StatusTable, StatusValue);
create table Thing (
ThingId integer not null, -- primary key
TableName varchar2(20) default 'Thing',
ThingStatus varchar2(20) not null
);
alter table Thing add constraint fkThingStatus
foreign key (TableName, ThingStatus)
references StatusCode(StatusTable, StatusValue);
Run Code Online (Sandbox Code Playgroud)
非常简单,易于实现,但有一个字段(存在于每条记录中)只是为了满足外键定义而存在,这很烦人。
有没有办法做类似的事情
create table NewThing (
NewThingId integer not null, -- primary key
NewThingStatus varchar2(20) not null …Run Code Online (Sandbox Code Playgroud)