修改删除Oracle触发器上的ID

时间:2015-06-01 16:28:15

标签: oracle triggers

ID VALUE
0   2
1   3
2   0

当删除id为0的第一条记录时,第二条记录应为0,第三条记录应为1.

导致:

ID VALUE
0   3
1   0

当删除id为1的记录时,第三个记录应为1。

ID VALUE
0   2
1   0

删除哪一项连续订单应从0开始维持。

此ID不是主键。应该在触发器中删除。

1 个答案:

答案 0 :(得分:0)

不要在触发器中修改同一个表,否则会遇到变异表问题。

另一种方法是使用存储过程并在删除记录后调用它。只需选择大于已删除ID的所有ID,然后从中减去1。

PROCEDURE UPDATE_IDS(deletedID in Number) IS
  BEGIN
    UPDATE table t
    SET ID = ID - 1
    WHERE ID > deletedID;
END UPDATE_IDS;