相对于几列的condiatally默认值

问题描述

我有一个包含几个表的数据库,其中一个用户表。我的用户表中有用户 ID、权限级别和权限激活列等。我希望如果用户 id 为 1,权限级别为 admin,激活为 1。如果用户 id 不为 1,则为 editor 或 author。权限级别为编辑者激活为0。权限级别为作者激活为1。

我根据用户 ID 处理了除管理员选择之外的所有条件。如何在我的数据库添加此条件? (注意:我使用的是 Mssql

解决方法

一个建议是像下面这样的存储过程:

CREATE PROCEDURE insertTableRecord(
  Id INT,Authority_Level VARCHAR(20),Authority_Activation INT)
AS
BEGIN
  IF (@Id = 1)
  BEGIN
    INSERT INTO myTable ([Id],[Authority Level],[Authority Activation])
    SELECT (@Id,@Authority_Level,1)
  END
  IF (@Id = 2)
  BEGIN
    IF (@Authority_Level = 'Editor')
    BEGIN
      INSERT INTO myTable ([Id],[Authority Activation])
        SELECT (@Id,0)
    END
    IF (@Authority_Level = 'Author')
    BEGIN
      INSERT INTO myTable ([Id],1)
    END
  END
END

您可以在此处自定义插入逻辑。 INSERT 触发器也是一种替代方法,但不确定是否可以在插入完成之前从 INSERTED 临时表填充列。 只要您的表业务逻辑以后不改变,默认约束也是一种选择。