SQL Server是否具有基于另一列的标识列

时间:2016-06-09 07:06:20

标签: sql-server

SQL Server是否可以根据另一列创建标识列?

我有像这样的桌面设计

Audit 
AuditId
CompanyId

系统中的所有内容都经过审核,表格可以是多租户,因此CompanyId

在审计的背景下,人们喜欢看到连续的事件序列,并且由于多租户性质,身份将跳过这样的数字。

  1. 公司1用户已登录
  2. 公司1用户已注销
  3. 公司1用户已登录
  4. Company9用户已登录
  5. 公司1用户已注销
  6. Company9用户退出
  7. 理想情况下,我会将AuditId保留为正常身份,但希望拥有CompanyId唯一的辅助标识列。

    这在SQL Server中是否可行,或者我是否需要在代码中执行此操作?

2 个答案:

答案 0 :(得分:1)

SQL Server不能有基于另一列的标识列,因为表中只能有一个标识列。

答案 1 :(得分:0)

您可以通过插入触发器填充companyAuditId。它将被定义为int,但在插入时触发器将

Create trigger trAuditI for insert 

        UPDATE audit
     SET CompanyAuditId = max(companyAuditId) 

    where companyId
        = Inserted.CompanyId