SQL Trigger Create Table语句

时间:2016-01-16 23:51:47

标签: mysql sql

如果有人在users表中插入一个值,我想创建一个新表。我有一个触发器:

Trigger with phpmyadmin

但它会引发错误:

  

MySQL meldet:#1422 - 存储函数或触发器中不允许显式或隐式提交。

然后我尝试使用begin和end语句手动创建它,但它引发了另一个错误:

manually trigger

如果我使用像delete from users这样的简单语句执行相同的触发器,则触发器可以正常工作。有人知道如何使用create语句创建触发器吗?

还可以选择如何创建像user_22这样的表名(用户插入的用户ID)?

1 个答案:

答案 0 :(得分:1)

所有数据定义语言(DDL)语句(如create,alter,drop)都会导致事务的隐式提交,因此它们不允许在用户定义的函数或触发器中使用,因为它们应该在与sql相同的事务中运行调用它们的语句。您可以创建一个存储过程,在user表中插入数据并创建另一个表,但我也不会这样做。

此外,您似乎有一个严重的设计缺陷:您不应该为每个用户创建一个单独的表。您可以将用户相关信息存储在一个表中,其中用户ID将告诉您某个记录属于哪个用户。

相关问题