设置检查约束以仅在特定数据条件下进行检查

时间:2019-05-19 02:37:19

标签: sql sql-server

我们有一个将用户映射到帐户的表。我们系统的一部分将用户类型用于不同级别的访问。此列表的一部分是某些“我们”特定的组帐户类型,仅适用于我们公司,不会再向其他公司分配这些帐户类型。

因此,我正在尝试进行约束检查以确保这种情况永远不会在db中发生。 (这是SSDT中开发的数据库)。

这里有一些桌子。因此,如果CompanyId = 1,我也不在乎您要设置UserType的内容,那么您就是我们之一。但是,如果还有其他情况,则禁止您分配这些帐户类型。

[id] INT NOT NULL PRIMARY KEY IDENTITY, 
[fkUserId] INT NOT NULL, 
[fkCompanyId] INT NOT NULL, 
[fkUserTypeId] INT NOT NULL , 
[amCreateDate] SMALLDATETIME NOT NULL DEFAULT sysutcdatetime(), 
[amRowVersion] ROWVERSION NOT NULL,
CONSTRAINT [csUserIdCompanyId] UNIQUE NONCLUSTERED ([fkUserId], [fkCompanyId]),
CONSTRAINT [csUserTypeIdCompanyId] CHECK (([fkCompanyId] != '1' and [fkUserTypeId] not in ('1', '2', '3')) or ([fkCompanyId] = '1')) 

它会生成,但在专门为该表植入种子时,会在数据种子后期部署脚本中失败。

第一个大型数据库项目...想学习...我在这里搞砸了什么?

谢谢大家!

0 个答案:

没有答案