我希望你能在这里帮助我.
我正在使用MySQL PhpMyAdmin,并且在此问题中有2个表.
表1:帐户-ID,帐户名,网站等,等等.
表2:网域-id,domain_name,account_name
我将这些查询插入了2个触发器.
更新之前
更新域,帐户
设置domains.account_name = NULL
其中account.website!= domains.domain_name
更新后
更新域,帐户
设置domains.account_name = accounts.account_name
其中domains.domain_name = main_accounts.website
有了这些,当我更新accounts表中的内容时,它将自动从域表中删除account_name,并且如果更新了某个帐户,则会放置新的account_name.
下图将显示示例.
尚未更新的表:
———-
帐户表
域表
———-
———-
更新了视图.
———-
———-
帐户表
域表
因此,在第二个帐户表映像上,我更改了域,并且域表已自动更新.我只想使1个触发器包含这2个更新查询.我不知道是否可能,因为完成此操作后,我可能还需要知道如何从1个触发器更新多个不同的表.我问的原因是因为我需要为每个正在使用的子表分配帐户名.例如,主表是会计科目表,子表需要更新:
domains.account_name
ip_address.account_name
phone.account_name
Payments.account_name
因此,我不知道在更新主表“ accounts”时是否甚至可以更新“ account_name”列下的那些子表.
谢谢.希望我的问题清楚. :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$$