我写一个触发器
Create TRIGGER trg_del_org_user BEFORE Delete ON t_organizationFOR EACH ROW BEGIN create table aa(a int);
END$总是失败 , 疑问 是否mysql不能建立触发器(里面创建新表)?
Create TRIGGER trg_del_org_user BEFORE Delete ON t_organizationFOR EACH ROW BEGIN create table aa(a int);
END$总是失败 , 疑问 是否mysql不能建立触发器(里面创建新表)?
解决方案 »
- mysql 数据丢失 如何恢复
- 文本数据导入mysql
- mysql binary string转换成bigint
- 用mysql client中文正常,可是一用navcat和mysql front等中文就会乱码
- psql如何查二日期之前?
- 一个性能优化的问题
- 如何用select count(*)返回其他的字段值?
- 一个简单的建表存储过程,执行没有错误,但是没有新表生成
- ORDER BY clicks 排序不正确
- sql 多个字段分组 怎么过虑分组排名前100名?sql怎么写?
- mysql大数据量时select如何提高效率
- select * from table where a = 1 and b = 2,这样的如何做索引比较合适呢
不能。原因是,在触发器中不能有任何 事务提交语句。 DDL 语句均会隐式的调用 commit;
这里介绍的某些限制适用于所有的存储子程序,即存储程序和存储函数。某些限制仅适用于存储函数而不是存储程序。对存储函数的的所有限制也适用于触发程序。注释:如果SQL语句,如SELECT ... INTO语句包含具有相同名称的对列的引用以及声明的局部变量,MySQL会将引用解释为变量的名称。这是一种非标准的行为,优先顺序通常是列名、然后是SQL变量和参数。请参见20.2.9.3节,“SELECT ... INTO语句”。存储子程序不能包含任意SQL语句。在存储子程序中,禁止使用下述语句:· CHECK TABLES · LOCK TABLES, UNLOCK TABLES · LOAD DATA, LOAD TABLE · SQL预处理语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)。隐含意义:不能在存储子程序中使用动态SQL语句(其中,能够以字符串形式构造动态语句,然后执行它们)。从MySQL 5.0.13开始,对于存储程序放宽了该限制,但该限制仍适用于存储函数和触发程序。· OPTIMIZE TABLE 对于存储函数(而不是存储程序),禁止下述额外语句:· 执行显式或隐式提交或回滚操作的语句。· 返回结果集的语句。包括没有INFO子句的SELECT语句,以及SHOW语句。能够用SELECT … INTO,或使用光标和FETCH语句处理结果集的函数。· FLUSH语句。注意,尽管能够在存储程序中使用FLUSH,但不能从存储函数或触发程序调用这类存储程序。注意,尽管某些限制在正常情况下适用于存储函数和触发程序,不适用于存储程序,如果它们是从存储函数或触发程序中调用的,这些限制也适用于存储程序。使用存储子程序会导致复制问题。关于这方面的进一步讨论,请参见20.4节,“存储子程序和触发程序的二进制日志功能”。INFORMATION_SCHEMA尚不包含PARAMETERS表,因此,对于需要在运行时获取子程序参数信息的应用程序来说,必须采用相应的规避错误,如解析SHOW CREATE语句的输出。没有存储子程序调试工具。存储子程序使用了具体化的光标,而不是固有光标(在服务器端生成结果集并对结果集进行高速缓冲处理,然后在客户端获取结果集时按行返回)。不能提前处理CALL语句。无论是对服务器端预处理语句还是SQL预处理语句,均成立。当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html