mysql - sql触发器从另一个字段设置字段值

标签 mysql sql

我正在尝试将触发器设置为 sql,以使用来自表 c_p_r 中的字段“title”的值来更新 gf 的值,但出现语法错误。有人可以指出我错在哪里吗?

  CREATE TRIGGER setgf
    AFTER UPDATE ON c_p_r
    FOR EACH ROW BEGIN
      TRUNCATE gf
      UPDATE gf
      SET gf = title
      FROM c_p_r

这东西用

回答我
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE gf
  SET gf = title
  FROM c_p_r' at line 5

谁能指出我哪里错了?

最佳答案

您的 UPDATE sql 查询格式不正确。此外,如果您尝试在更新期间将一个字段值复制到另一个字段。您应该使用 BEFORE UPDATE 处理程序。我会像下面这样写查询:

 CREATE TRIGGER setgf
    BEFORE UPDATE ON c_p_r
    FOR EACH ROW BEGIN
      SET NEW.gf = COALESCE(NEW.gf, NEW.title); //this will take care of not overriding the gf if it was part of update statement
    END

关于mysql - sql触发器从另一个字段设置字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118121/

相关文章:

mysql - 无法通过 Travis CI 上的套接字连接到本地 MySQL 服务器

php MySQL csv 输出,带有 WHERE LIKE %%

mysql - 选择另一个 RDBMS

php - 在 Laravel 5.1 DB 中重命名列的异常

mysql - SQL——多对多查询

mysql - 如何使用mysql获取group by中的第一个,最大,最小,最后一条记录

javascript - 比较用 PHP hash() 和 NodeJS crypto.createHash() 制作的 SHA256

mysql - 在语句的 WHERE 部分使用 OR 过滤 SQL 结果的最佳实践

sql - 为什么 SQL Server 更喜欢 >= 1 而不是 > 0?

sql - phpMyAdmin 4.8.4 导出表,因为缺少 SQL