mysql - 如何创建 BEFORE INSERT 触发器

标签 mysql

我正在尝试创建一个 BEFORE INSERT 触发器,但出现了我不明白的错误。

创建触发器的 MySQL 如下所示:

CREATE  TRIGGER `GetPolyLinkID` BEFORE INSERT ON `TableA` 
FOR EACH ROW 
BEGIN
    INSERT INTO TableB () VALUES ();
    NEW.PolyLinkID = last_insert_id();
END

我遇到的错误是

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 'END' at line 1

最佳答案

您忘记了SET ...开始NEW.PolyLinkID = last_insert_id();

还有

要创建复杂的触发器,您必须使用delimiter关键字。

这是 rom https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html 中的示例.

delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
   IF NEW.amount < 0 THEN
       SET NEW.amount = 0;
   ELSEIF NEW.amount > 100 THEN
        SET NEW.amount = 100;
   END IF;
END;
//
delimiter ;

续集专业版的屏幕截图

example with SEQUEL PRO

关于mysql - 如何创建 BEFORE INSERT 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635701/

相关文章:

php - php代码的preg_replace

MySql 将三个表连接在一起并计算行数

javascript - 使用 php 中的选择显示我的数据库表

PHP - 从 sql 数据库调用的数组不能正确分解,但直接创建的数组可以吗?

c# - 使用 Entity Framework 执行存储过程

java - 结果集打印到txt文件

php - MySQL "Incorrect String Value"utf8mb4 编码错误

PHP 获取年龄函数在 Codeigniter 上不起作用

mysql - 停止 cloud_sql_proxy

mysql - 分析 Magento 性能