有没有办法在MySQL中创建新表时自动创建触发器?

时间:2010-03-26 10:37:13

标签: mysql triggers

有没有办法在MySQL中创建新表时自动创建触发器?

1 个答案:

答案 0 :(得分:3)

正如我在your other question中指出的那样,我认为这里有一个流程和安全审查。这是一个经过审核的数据库,因此没有人(特别是第三方服务提供商)应该在数据库中在您不知情的情况下创建表

您遇到的问题是,除了正在创建的新表之外,您还需要创建另一个表来存储审计/更改的记录,这些记录将具有与原始表相同的结构,可能还有时间/日期和用户列。如果第三方提供商正在创建此表,他们将不知道创建审计表,因此即使您可以动态生成触发器,它们也无法工作。

不可能创建一个表来保存数据库中所有其他表的所有更改记录,因为表之间的结构不可避免地存在差异。

因此:进行所有更改请求(例如,提供商想要创建TableX,他们向您自己和/或您的团队提交更改请求(包括SQL脚本),解释更改的原因)。

您在数据库的测试副本上执行SQL,并使用相同的结构创建另一个表来保存已修改的记录。

然后创建并测试必要的触发器,生成新的SQL脚本以创建两个表和触发器,并在您的实时数据库上执行该操作。您授予提供商使用新表的权限,然后离开。

每个人都很开心。是的,它可能需要更长的时间,是的,你将有更多的工作要做,但这比尝试解析查询日志以重新创建已经更改的记录所需的工作少得多。删除,或解析二进制日志并及时更新每个更改,并在日志文件格式更改等时修改代码。

相关问题