如何在触发器中放置多个更新?

How to put multiple updates in a trigger?

我希望你能在这里帮助我。 我正在使用 MySQL + PhpMyAdmin 并且我在这个问题中有 2 tables。

Table 1: 账户 - id, account_name, 网站等等...
Table 2:域 - id,domain_name,account_name

我将这些查询插入到 2 个触发器中。

更新前
更新域、帐户
设置 domains.account_name = NULL
其中 accounts.website != domains.domain_name

更新后
更新域、帐户
设置 domains.account_name = accounts.account_name
其中 domains.domain_name = main_accounts.website

有了这些,当我更新帐户 table 中的内容时,它会自动从域 table 中删除 account_name 并在某个帐户中添加新的 account_name已更新。

下面的图片将显示示例。
Table尚未更新:
----------
帐户Table

域Table
----------
----------
更新视图。
----------
----------
帐户Table

域Table

因此,在第二个帐户 table 图像上,我更改了域并自动更新了域 table。我只想制作 1 个包含这 2 个更新查询的触发器。我不知道这是否可能,因为在完成此操作后,我可能还需要知道如何从 1 个触发器更新多个不同的 table。我之所以这么问是因为我需要为每个正在使用的sub-table分配账户名。例如,主要 table 是帐户 table,需要更新的子 table 是:
domains.account_name
ip_address.account_name
phones.account_name
payments.account_name

因此,我不知道是否有可能在主 table "accounts" 更新时更新 "account_name" 列下的那些子 table。

谢谢。我希望我的问题很清楚。 :D :D

您可以使用 BEGIN 和 END 将多个语句组合到一个触发器中。

示例:

DELIMITER $$

CREATE TRIGGER my_trigger BEFORE INSERT ON accounts
FOR EACH ROW
BEGIN
    -- Statement one
    UPDATE domains
    SET domains.account_name = accounts.account_name
    WHERE domains.domain_name = main_accounts.website;
    -- Statement two
    UPDATE another_table
    SET another_table.column_name = accounts.account_name
    WHERE another_table.domain_name = accounts.some_column;
    -- More UPDATE statements
END$$