咖啡与喵 2017-04-11 02:00 采纳率: 100%
浏览 890
已采纳

Oracle触发器,求大神详细讲解

有一个想法,
首先创建一个表,有ID(主键),NAME,AGE
再创建一个表,表内有count。
制作一个触发器,如果用户对第一个表进行增删改的时候,触发触发器,对第二个表的count进行+1。
求解决,小白懂得少,希望大神教学,谢谢

  • 写回答

3条回答 默认 最新

  • 战在春秋 2017-04-11 02:18
    关注

    1 创建table1:

    CREATE TABLE table1 
    ( id number(5), 
      name char(20), 
      age number(2), 
    );
    

    2 创建table2,并给count字段初值为0

    CREATE TABLE table2 
    ( count number(5), 
    );
    
    INSERT INTO table2 VALUES (0);
    

    3 插入触发器

    CREATE OR REPLACE TRIGGER add_after_insert
    AFTER INSERT
       ON table1
       FOR EACH ROW
    
    DECLARE
       v_currentCount number(5); 
    
    BEGIN
        SELECT count INTO v_currentCount FROM table2;
        UPDATE table2  SET count = v_currentCount +1;
    END
    

    4 删除触发器

    CREATE OR REPLACE TRIGGER add_after_delete
    AFTER DELETE
       ON table1
       FOR EACH ROW
    
    DECLARE
       v_currentCount number(5); 
    
    BEGIN
        SELECT count INTO v_currentCount FROM table2;
        UPDATE table2  SET count = v_currentCount +1;
    END
    

    5 更新触发器

    CREATE OR REPLACE TRIGGER add_after_update
    AFTER UPDATE
       ON table1
       FOR EACH ROW
    
    DECLARE
       v_currentCount number(5); 
    
    BEGIN
        SELECT count INTO v_currentCount FROM table2;
        UPDATE table2  SET count = v_currentCount +1;
    END
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同