我想在SQL Server数据库中找出触发器。我是一名暑期项目的学生,所以我不是专业人士,但可以轻松学习。TSQL触发器来保持增量订单的完整性
这是我的数据库表的简化版本排序按等级:
ID作为主键
ID | RANK
--------------
2 | NULL
1 | 1
3 | 2
4 | 3
7 | 4
我的目标现在是要插入的能力/删除/更新等级并保持数据库中等级的增量顺序,而没有缺少可用职位中的数字并且没有重复。
/* Insert new row */
INSERT INTO TABLE (ID, RANK) VALUES (6, 4)
/* AFTER INSERT */
ID | RANK
--------------
2 | NULL
1 | 1
3 | 2
4 | 3
6 | 4 <- new
7 | 5 <- notice how the rank increased to make room for the new row
我认为在触发器中这样做是最有效/最简单的方法;虽然我可能是错的。
除了触发器,我做了一个临时解决方案,当任何等级改变时,我使用前端代码在每一行上运行更新。
如果你知道如何或如果触发器可以做到这一点,请分享。
编辑:添加方案 被插入的等级将始终采用其分配的编号。所有大于或等于被插入的东西都会增加。
引起触发的排名将始终优先声明其编号,而其他所有排名都会增加以适应排名。
如果rank是最高数字,那么触发器将确保该数字是最大值的+1。
这会增加。 ID恰好是为了?如果插入是(2,5)会怎么样? – Paparazzi
这会影响你桌子的表现。 –
尝试使RANK列成为计算列 –