按照书上例子写报错,但不理解,不会改
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中
参考:
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;
很好奇你书里的例子,能不能拍个照看看,顺便拍一下书名?
"REFERENCING NEW TABLE AS"这种写法在pg里是有的,
在DB2里是"REFERENCING NEW_TABLE AS",
然后我怀疑是我孤陋寡闻,在网上搜到了这篇,和你这个sql一模一样
http://codetd.com/article/10431225
但是,这是sql server啊,不是mysql,mysql是不支持这种语法的,不同数据库的语法是不一样的