gpt4 book ai didi

php - 有什么方法可以确定对数据库行的更新是由 Web 应用程序(php 进程)执行的,还是通过 DB GUI 手动运行的

转载 作者:行者123 更新时间:2023-11-28 23:30:31 25 4
gpt4 key购买 nike

我需要允许通过 DB GUI 对我的审计系统进行编辑,以便它们也能被跟踪。我正在使用 BEFORE 触发器更新审计表,并且我希望能够更改审计行以指示更新的来源(通过现有的“modified_by”列)。

我不能为此向审计表添加额外的列,因为我希望能够从更新的表复制到审计表而不指定如下表列(我不希望此触发器要求我更新它与架构的更改)。

我的触发器:

BEGIN
INSERT INTO contacts_audit SELECT * FROM contacts WHERE id = NEW.id;
END

伪触发器:

BEGIN
IF(GUI EDIT) THEN
SET NEW.modified_by_id = 1; /* 1 is the administrator id */
END IF;
INSERT INTO contacts_audit SELECT * FROM contacts WHERE id = NEW.id;
END

最佳答案

连接到数据库的“DB GUI”是一个客户端,一个 php 连接也是一个客户端,与任何其他连接到数据库的方式一样,所以没有像“这是 php”这样的标志。

然而,您可以在触发器中使用 USER() 或 SESSION_USER() 函数来获取当前连接的事件用户/主机名,因此如果您想要分开,只需为 php 和 gui 使用不同的用户/主机他们。

关于php - 有什么方法可以确定对数据库行的更新是由 Web 应用程序(php 进程)执行的,还是通过 DB GUI 手动运行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460246/

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