灯火阑珊ya 2021-12-16 17:21 采纳率: 50%
浏览 76

MYSQL触发器怎么写?

问题遇到的现象和发生背景

按照书上例子写报错,但不理解,不会改

问题相关代码,请勿粘贴截图
mysql> CREATE TRIGGER Student_Count
    -> AFTER INSERT ON Student
    -> REFERENCING
    -> NEW TABLE AS DELTA
    -> FOR EACH STATEMENT
    -> INSERT INTO StudentInsertLog(Numbers)
    -> SELECT COUNT(*)FROM DELTA;

运行结果及报错内容

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCING
NEW TABLE AS DELTA
FOR EACH STATEMENT
INSERT INTO StudentInsertLog(N' at line 3

我想要达到的结果

将每次对表Student的插入操作所增加的学生个数记录到表StudentInsertLog中

  • 写回答

2条回答 默认 最新

  • 关注

    参考:

    CREATE OR REPLACE TRIGGER TRI_DELETE_INFO
      AFTER DELETE ON T_INFO_2012
      REFERENCING OLD AS OLD NEW AS NEW
      FOR EACH ROW
    DECLARE
      V_SQLERRM VARCHAR2(200);
    BEGIN
      DELETE FROM T_INFO_2013 WHERE CODE = :OLD.CODE;
      --COMMIT; 触发器中不可以使用COMMIT;
    EXCEPTION
      WHEN OTHERS THEN
        V_SQLERRM := '触发器 TRI_DELETE_INFO 出错:' || SQLERRM;
        INSERT INTO PROCEDURE_LOG
          (ERRMSG, ERRDATE)
        VALUES
          (V_SQLERRM, SYSDATE);
    END;
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月16日

悬赏问题

  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)