复合主键部分上的SQL Server检查约束

复合主键部分上的SQL Server检查约束,sql,sql-server,Sql,Sql Server,尝试学习SQL。似乎找不到这个问题的答案,或者如果我找到了,我不知道足够的SQL来识别它。是否可以在其中一个键列上创建具有复合主键和检查约束的表 具体而言,这在以下情况下失败: INSERT语句与CHECK约束“CH_AddressType”冲突。冲突发生在数据库“tempdb”表“dbo”中 如果我在表中注释掉check约束,创建并取消对alter表的注释,insert就会工作 这两种创建表格的方法…创建相同的表格吗?我缺少什么 create table #t ( entityNo

尝试学习SQL。似乎找不到这个问题的答案,或者如果我找到了,我不知道足够的SQL来识别它。是否可以在其中一个键列上创建具有复合主键和检查约束的表

具体而言,这在以下情况下失败:

INSERT语句与CHECK约束“CH_AddressType”冲突。冲突发生在数据库“tempdb”表“dbo”中

如果我在表中注释掉check约束,创建并取消对alter表的注释,insert就会工作

这两种创建表格的方法…创建相同的表格吗?我缺少什么

create table #t 
(
    entityNo        int             not null,
    addressType     char(1)         not null,
    valid           char(1)         not null,

    address1        varchar(256)    not null,
    address2        varchar(256)    not null,
    city            varchar(128)    not null,
    stateCode       char(2)         not null,
    zipCode         char(5)         not null,

    dtCreate        datetime        not null,
    dtUpdate        datetime        not null

    constraint PK_Address_Entity 
         primary key (entityNo, addressType),

    constraint CH_AddressValid 
         check (valid in ('Y', 'N')),
    constraint CH_AddressType 
         check (valid in ('H', 'V'))
)
go

--alter table #t
--  add constraint CH_Address_Type check ((addressType) in ('H', 'V'))
--go

insert into #t (entityNo, addressType, valid, address1, address2, city, stateCode, zipCode, dtCreate, dtUpdate)
values (100, 'H', 'Y', '100 Some Street', '' , 'Someville', 'PA', '19335', '2016-10-08', '2016-10-08')

select * from #t
go

drop table #t
go

约束Chu地址类型检查(在('H','V')中有效)

应该是


constraint CH_AddressType check(AddressType in('H','V'))

在哪里有效?是的。有没有办法关闭问题/将其标记为已接受(可能也在我鼻子底下)。@Joe点击灰色
在答案的左边,投票部分的右边