创建仅在其他表的值等于true时才接受条目的列

时间:2018-12-30 09:25:30

标签: sql sql-server

我正在创建一个小型数据库,需要在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 

1 个答案:

答案 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)
);

此方法的替代方法是使用触发器或用户定义的函数。