小编Nav*_*vin的帖子

当TRIGGER需要选择并在同一个表中插入行时,变异表问题

我们有以下要求:

表1:复合主键version, id

------------------------------------
version   id     col1  coll2  active
------------------------------------
 1        123    'A'   'B'     'N'
 2        123    'C'   'D'     'Y'
 1        124    'E'   'F'     'Y'
Run Code Online (Sandbox Code Playgroud)

现在,table1对于给定的任何插入和更新id,应使用以下属性(由触发器派生)创建新行:

  1. Version对于给定id和,应该增加1
  2. 最新的行应该变为活动状态(active列设置为Y)

例如

INSERT INTO table1(id, col1, col2) VALUES (123, 'X', 'Y');

------------------------------------
version   id     col1  coll2  active
------------------------------------
 1        123    'A'   'B'     'N'
 2        123    'C'   'D'     'N'
 3        123    'X'   'Y'     'Y' 
 1        124    'E'   'F'     'Y'
Run Code Online (Sandbox Code Playgroud)

第3行已创建

UPDATE …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle11g

4
推荐指数
1
解决办法
5568
查看次数

标签 统计

oracle ×1

oracle11g ×1

plsql ×1

sql ×1