2010-03-26 97 views
1

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

+2

您通常不应该动态创建新表。表结构应该是静态的。你想做什么? – 2010-03-26 10:41:04

+1

你是在创建表而不是添加行? – 2010-03-26 10:45:35

+0

我正在为审计试验准备脚本,在这种情况下,我正在处理这种情况:如果创建了新表,该怎么办?在这种情况下,我将无法使用所需的表触发器来跟踪数据更改。因此,如果我可以创建触发器,如查找新表创建...请帮助我解决此问题.. – 2010-03-26 10:46:34

回答

3

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

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

创建单个表将不可能创建一个表,该表将保存数据库中所有其他表的所有更改记录,因为表之间的结构不可避免地会有所不同。

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

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

然后,您创建并测试必要的触发器,生成一个新的SQL脚本以创建两个表格和触发器,并在您的实时数据库上执行该触发器。你给你的提供者使用新表的权限,然后他们去。

大家都很开心。是的,这可能需要一些时间,是的,你会有更多的工作要做,但这比尝试解析查询日志以重新创建已经被更改的记录所需的工作少得多。删除或解析二进制日志并随时更新每次更改,并在日志文件格式发生变化时修改代码等。

+0

phewwwww !!! korrrrect :-) – 2010-03-26 12:04:57

相关问题