gpt4 book ai didi

php - 如何在共享托管平台上使用 PHPMyAdmin 中的触发器创建审核跟踪?

转载 作者:行者123 更新时间:2023-11-29 13:02:31 24 4
gpt4 key购买 nike

我发现这是创建触发器的好方法.. https://www.simple-talk.com/author/pop-rivett/

但我认为这只是使用sql server..我正在寻找一种方法来审计我的非常小的(3mg)数据库以显示每个表的更改,谁更改了什么,何时,何地,也许他们是否放入了注意,为什么。 :)

请告诉我您是否有使用 phpmyadmin sql 选项卡或触发器创建器创建“触发器”的代码来插入代码?我根本不是一个真正的程序员,只是在过去的几个月里学习了 php 和 mysql。非常感谢任何帮助。我经营一家小型非营利组织,希望在我们的数据库中跟踪标记的海牛、海龟和鲨鱼,并希望对数据进行“虚拟”验证,以防止可能对数据进行不良更改的虚拟者。

请帮忙,这是一个好的事业!

谢谢,蒂娜

最佳答案

也许是这样的:

DELIMITER $$
CREATE TRIGGER `AuditUserTrigger`
BEFORE UPDATE ON `Users`
FOR EACH ROW BEGIN
INSERT INTO `aUsers`
SELECT `Users`.*
FROM `Users`
INNER JOIN `AuditTables`
ON `AuditTables`.`name` = 'Users'
AND `AuditTables`.`enabled` = 1
WHERE `Users`.`id` = OLD.`id`;
END$$
DELIMITER ;

编辑

通过解释:

我有一个审计表定义为

CREATE TABLE IF NOT EXISTS `AuditTables` (
`id` int(12) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL,
`enabled` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `auditTable` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
;

其中包含数据库中每个核心表的条目,以及可以设置为 true 或 false(1 或 0)的事件标志,具体取决于我是否希望对该表进行审核。

对于我的 Users 表(如原始示例所示),我有一个相应的审核表 (aUsers),其结构相同,但没有唯一键,可以保存Users 表中的所有“历史”记录。如果为 Users 启用了审核,则 Users 上的 ON UPDATE 触发器会将旧 Users 表记录保存到 aUsers对用户记录执行实际更新之前。

所有表中的所有记录还具有以下列:

`archived` tinyint(1) NOT NULL DEFAULT '0',
`createdAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`createdBy` int(12) unsigned NOT NULL DEFAULT 0,
`updatedAt` datetime ON UPDATE CURRENT_TIMESTAMP,
`updatedBy` int(12) unsigned DEFAULT NULL,

向我提供更新完成的人员和时间的详细信息,同时将已存档标志设置为“软删除”

createdByupdatedBy 由我的代码管理,模型层中的一个元素会自动将 session 用户 ID 注入(inject)该属性。

updatedAt datetime ON UPDATE CURRENT_TIMESTAMP, 需要 MySQL 5.6

关于php - 如何在共享托管平台上使用 PHPMyAdmin 中的触发器创建审核跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142037/

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