相对于少数列的条件默认值



我有一个数据库,它有几个表,其中一个是用户表。

在我的用户表中有用户ID、授权级别和授权激活列等。

  • 如果用户id为1,则权限级别为admin,激活级别为1。

  • 如果用户id不是1,那么它将是编辑器或作者。

  • 如果权限级别为编辑器,则激活将为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 Level], [Authority Activation])
        SELECT (@Id, @Authority_Level, 0)
    END
    IF (@Authority_Level = 'Author')
    BEGIN
      INSERT INTO myTable ([Id], [Authority Level], [Authority Activation])
        SELECT (@Id, @Authority_Level, 1)
    END
  END
END

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

最新更新