Fox微微 2013-03-20 16:56 采纳率: 0%
浏览 200
已采纳

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)
4:随便写。
请问这样的触发器该怎么写。

  • 写回答

2条回答 默认 最新

  • ∫Ag 2013-03-20 18:42
    关注

    已经解决,速度给分 :P

    create or replace trigger tr_zhangyi
    after update on table_a for each row
    --只有在修改之后才触发
    declare
    i number;
    BEGIN
    if :new.status = '1' and :new.id = '0001' and :new.year = '2013' then
    for i in 1 .. 12 loop
    --月份只有12个月,故可以用循环
    insert into table_b
    (id, year, month, color)
    values
    (seq_tab_b.nextval, :new.year, i, 'abcd');

         --序列是从1开头的,但是B表的ID字段需要是0001开头,故需要对ID进行处理
         -- update table_b
    
    end loop;
    

    end if;
    END;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)