微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相对于几列的condiatally默认值

如何解决相对于几列的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 临时表填充列。 只要您的表业务逻辑以后不改变,默认约束也是一种选择。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。