ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger

来源:互联网 发布:会php学java 编辑:程序博客网 时间:2024/06/11 13:19
  1. mysql> DELIMITER //  
  2. mysql> CREATE PROCEDURE ps(IN table_name VARCHAR(200))  
  3.     -> BEGIN  
  4.     -> SET @newname = table_name;  
  5.     -> SET @s = CONCAT('create table ',@newname,'(resourceid varchar(200),',@newname,' varchar(200),time date)');  
  6.     -> PREPARE stmt FROM @s;  
  7.     -> EXECUTE stmt;  
  8.     -> DEALLOCATE PREPARE stmt;  
  9.     -> END  
  10.     -> //  
  11. Query OK, 0 rows affected (0.00 sec)  
  12. mysql> CREATE TABLE zs_resourcegroup(group_name VARCHAR(20));  
  13.     -> ;  
  14.     -> //  
  15. Query OK, 0 rows affected (0.01 sec)  
  16.   
  17. mysql> DELIMITER //  
  18. mysql> CREATE TRIGGER ts AFTER INSERT ON zs_resourcegroup   
  19.     -> FOR EACH ROW  
  20.     -> BEGIN  
  21.     -> CALL ps(new.group_name);  
  22.     -> END  
  23.     -> //  
  24. Query OK, 0 rows affected (0.00 sec)  
  25.   
  26. mysql> insert into zs_resourcegroup select 'dba';  
  27.     -> //  
  28. <span style="color:#ff0000;"><strong>ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger</strong>  
  29. </span>mysql>   
  30. mysql>   
  31. mysql> call ps("cui");  
  32.     -> //  
  33. Query OK, 0 rows affected (0.01 sec)  
  34. mysql> show tables;  
  35.     -> //  
  36. +------------------+  
  37. | Tables_in_test   |  
  38. +------------------+  
  39. | cui              |  
  40. | t                |  
  41. | zs_resourcegroup |  
  42. +------------------+  
  43. rows in set (0.00 sec)  

上网查了一下,发现触发器中不支持动态sql,单独执行存储过程还是可以支持的。
0 0