`
qianlong1207
  • 浏览: 35314 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle触发器

阅读更多

表A 和 表B,表B的外键是表A的主键。两个表存在一对多的关系。
现在:
当更新表A,并且表A的字段 colum1 的值为1的时候,执行以下操作:
1、为表B插入12条数据
2、表B的主键自增。
3、表B的外键是刚插入的表A的主键值。
例如:
表A有三个字段(id,year,status)
表B有三个字段(id,year,month,color)
当执行
update A set year = '2013' and status = '1' where id = '0001'
这条语句的时候触发以下SQL语句
inset into B vaalues(1,2,3,4)
1:id的值实现自增。
2:year 等于刚才的update语句的year字段的值。
3:month = 从1-12这个12个月(就是说要一次增加12条记录,前面id和year不变,month=从1到12)

create or replace trigger inset_a_trigger 
  after insert on a  
  for each row 
    when (new.status = 1) 
declare 
  v_a_id number; 
  v_a_year number; 
  v_i number; 
begin 
    v_a_id := :new.id; 
    v_a_year := :new.year; 
    v_i := 1; 
    while v_i <= 12 loop 
         insert into ab(id, a_id, year, month) 
         values(b_s.nextval, v_a_id, v_a_year, v_i); 
         v_i := v_i + 1; 
    end loop; 
end inset_a_trigger;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics