php - 如何根据 mysql 中以前的条目更新表

标签 php mysql triggers

我在 mysql 中使用触发器时遇到严重问题。 基本上我试图在插入后更新一行。我正在使用该行中的现有值并尝试更新同一行的其他列。

例如:

Existing_Name Actual_Name
Product_Arc1  Arc1
Product_Arc2  Arc2
Product_Arc3

我正在获取Existing_Name 的值并提取它的第二部分,并使用触发器更新Actual_Name。但是既然 MySQL 不支持更新激活触发器的同一个表呢?有什么可能的方法来做我想做的事吗?

到目前为止,我正在使用 PHP 脚本来执行相同的效果。但这要求最终用户在数据库发生变化时不断从网络浏览器触发此脚本。

任何想法表示赞赏。

谢谢。

最佳答案

它是否必须是“插入后一个”触发器?如果您需要 auto_increment 值来计算要修改的字段的值,就会出现这种情况。否则,应该使用“插入之前”触发器。您可以通过 SET NEW.fieldname = newvalue

更改要插入的字段的值

例如我们拿 table 吧

CREATE TABLE foo (id int auto_increment, x int, y int, primary key(id))

create a before insert trigger

delimiter |

CREATE TRIGGER footrigger BEFORE INSERT ON foo
  FOR EACH ROW BEGIN
    IF NEW.y > NEW.x THEN
       SET NEW.y = -1;
    END IF;
  END;
|

现在让我们插入两条记录,一条记录 y=x,另一条记录 y>x

INSERT INTO foo (x,y) VALUES (1,1), (1,2)

A SELECT x,y FROM foo 然后返回

"x";"y"
"1";"1"
"1";"-1"

关于php - 如何根据 mysql 中以前的条目更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551567/

相关文章:

php - jQuery $.ajax 请求在 Internet Explorer 中收到错误响应

php - 如何按键而不是偏移对数组进行切片?

javascript - 自动提交表单错误

mysql - 如何连接多个表,确保将较小的表扩展到较大的表

collections - Mongodb 自动写入上限集合

php - Laravel 使用 CSRF 保护发布 JSON

php - 我有在 SDK 上运行但不在设备上运行的 Android 数据库应用程序

mysql - 尝试从 mysql 触发器插入时出现语法错误

sql - 同一张表中的mysql触发器

javascript - 如何以文本形式在para或div中显示ajax响应?