问题描述
我有一个包含几个表的数据库,其中一个是用户表。我的用户表中有用户 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 临时表填充列。 只要您的表业务逻辑以后不改变,默认约束也是一种选择。