gpt4 book ai didi

MySQL - 可以调用函数来执行触发器操作吗?

转载 作者:行者123 更新时间:2023-11-29 05:35:38 24 4
gpt4 key购买 nike

在我的架构中,我有许多表,其中包含我需要填写的公共(public)字段。这基本上是像这样的控制字段:

id_db_user
date_creation
date_last_update

我做了两个触发器来填充这个字段:

-- Trigger DDL Statements
delimiter |
CREATE TRIGGER control_insert BEFORE INSERT ON EZT_SOCIETIES

FOR EACH ROW BEGIN

SET NEW.id_db_user = current_user;

SET NEW.date_creation = current_timestamp;

END;
| delimiter ;


delimiter |
CREATE TRIGGER control_update BEFORE UPDATE ON EZT_SOCIETIES

FOR EACH ROW BEGIN

SET NEW.date_last_update = current_timestamp;

END;
| delimiter ;

我的问题是:我可以编写一些函数来调用触发器内的操作吗?像这样:

function fn_control_insert
SET NEW.id_db_user = current_user;
SET NEW.date_creation = current_timestamp;

然后在触发器中调用这个函数,例如:

delimiter |
CREATE TRIGGER control_insert BEFORE INSERT ON EZT_SOCIETIES

FOR EACH ROW BEGIN

call fn_control_insert;

END;
| delimiter ;

这在 MySQL 中可以做到吗?

最好的问候,

最佳答案

不,不幸的是,这是不可能的,您也不能将 NEW 和 OLD 作为参数传递,函数参数也不能是 OUT 或 INOUT(即可写),所以简短的回答是否定的。

您可以从触发器调用函数(前提是该函数不违反任何 MySQL 触发器限制,例如修改触发器附加到的表),但是您必须将函数传递给每个单独的 NEW 或您需要读取的 OLD 字段,函数将无法写入它们——您可以从函数做的就是返回一个值。

关于MySQL - 可以调用函数来执行触发器操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com