mysql - 创建触发器后在现有表上触发 MySQL 触发器

标签 mysql triggers

我有一个包含 2 列的表,名为“Table1”: (第 1 列名为“Col1”,值为:A、B、C、D、E、F) (第 2 列名为“Col2”,值为:12,15,2,5,200,1)。

我希望将第 2 列中的所有值更改为值 1(如果它们的值低于 100),这样第 2 列最终将如下所示: (第 2 列名为“Col2”,值为:1,1,1,1,200,1)。

我尝试创建一个触发器:

delimiter //

CREATE TRIGGER Table1upd BEFORE UPDATE ON Table1 
FOR EACH ROW 
BEGIN
    IF NEW.Col2<100 THEN
        SET NEW.Col2=1;
    END IF;
END;//

delimiter ;

在 MySQL Workbench 中创建触发器时,它显示触发器已添加,但有 0 行受到影响。

我认为我的问题出在 BEFORE UPDATE 选择上,因为当我更新表中的值时触发器确实可以工作,但我不知道将其更改为什么,以便触发器最初也会在我更新时自动执行创建它。

预先感谢您的帮助, d

最佳答案

答案很简单:a BEFORE UPDATE触发器仅在 UPDATE 上触发,所以您需要一个第二触发器 BEFORE INSERT涵盖两个用例:更新和插入:

delimiter //

CREATE TRIGGER Table1insert BEFORE INSERT ON Table1 
FOR EACH ROW 
BEGIN
    IF NEW.Col2<100 THEN
        SET NEW.Col2=1;
    END IF;
END;//

delimiter ;

关于mysql - 创建触发器后在现有表上触发 MySQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719634/

相关文章:

mysql - 你如何在 MySQL 中存储未定义数量的东西?

mysql - vb无法连接数据库

php - 我的 PHP MySQL 语法太长

php - 无法在 PHPmyadmin 中创建外键

php - Mysql 主表不存在时自动插入记录

mysql - 插入时触发;代替 A 做 B

MySQL在插入tbl1时创建触发器也插入到tbl2

MySQL COUNT 记录在 GROUP BY 之前

mysql - 如何编写MySQL before insert触发器来向表中插入数据?

mysql触发器: column not part of the update is not null