我正在创建一个小型数据库,需要在table 1
中创建一列,该列仅在table 2
值等于true
时才接受一个条目。
我想到了以下代码:
ALTER TABLE MarshallGroup
ADD TRANumber NUMERIC(4, 0) CHECK (Member.isMarshall = 'True')
但是,出现此错误:
无法绑定多部分标识符“ Member.isMarshall”。
我知道我必须使用内部联接,但是我不知道在哪里使用它(就像我说过的SQL一样)。
**First table: Member**
(PK)TRANumber
firstName
lastName
gender
ClubID
shortNameCatID
age
year
isMarshall <-- this one has to equal to true to be accepted in table 2
**Second Table: MarshallGroup**
(PK)marshallGroupID
(soon to be FK)TRANumber <- this is the column Im creating
groupNumber
答案 0 :(得分:0)
如果我理解正确,则可以使用外键约束和计算列来完成所需的操作:
create table Members as (
. . .,
TRANumber number(4, 0),
isMarshall varchar(10),
. . .
constraint chk_members_isMarshall check (isMarshall in ('True', 'False')),
constraint unq_members_TRANumber_isMarshall unique (TRANumber, isMarshall)
);
create table MarshallGroups as (
. . .,
isMarshall as ('True') persisted,
constraint fk_MarshallGroups_Members
foreign key (TRANumber, isMarshall) references members(TRANumber, isMarshall)
);
此方法的替代方法是使用触发器或用户定义的函数。