CREATE TRIGGER `db_name`.`trigger_name` BEFORE DELETE ON `db_name`.`table1_name`
FOR EACH ROW
BEGIN
INSERT INTO `db_name`.`table2_name`(table2_id,`comment`,record_created_date)
VALUES (OLD.id, OLD.`comment`, NOW());
END
語法錯誤發生在“OLD comment”。因為注釋是 MySql 中的保留字并且它在 OLD 之后,即使使用反引號(“`”),上面的查詢也不起作用。
當然,最簡單的解決方案是更改列名。但是,就我而言,這不是一個選擇。如果您知道正確的語法,請提供幫助。謝謝。
uj5u.com熱心網友回復:
錯誤訊息是: SQL 錯誤(1064):您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,以在第 5 行的 '' 附近使用正確的語法。
第 5 行是代碼中包含第一個分號的行。您忘記了 DELIMITER 重新分配。
所以
DELIMITER ;;
CREATE TRIGGER `db_name`.`trigger_name` BEFORE DELETE ON `db_name`.`table1_name`
FOR EACH ROW
BEGIN
INSERT INTO `db_name`.`table2_name`(table2_id,`comment`,record_created_date)
VALUES (OLD.id, OLD.`comment`, NOW());
END
;;
DELIMITER ;
但是您的觸發器僅包含一個陳述句,因此請洗掉 BEGIN 和 END 行。在這種情況下,不需要重新分配 DELIMITER。
CREATE TRIGGER `db_name`.`trigger_name` BEFORE DELETE ON `db_name`.`table1_name`
FOR EACH ROW
INSERT INTO `db_name`.`table2_name`(table2_id,`comment`,record_created_date)
VALUES (OLD.id, OLD.`comment`, NOW());
PS。DEFAULT CURRENT_TIMESTAMP對db_name.table2_name.record_created_date列使用 autoutilizing ( ) ,您可以將其從INSERT.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418289.html
標籤:
下一篇:MariaDB排序字串值與派系
