触发器不起作用 - 在插入之前更改新列的表

时间:2012-08-03 05:59:11

标签: php mysql triggers alter

我正在触发更改一个向其添加新列并将值插入其中的表。

我的代码看起来像lyk:

 delimiter |

 CREATE TRIGGER addfield AFTER INSERT ON `entity_group_mapping`
 FOR EACH ROW BEGIN
     ALTER TABLE user_access ADD NEW.type_name INT(2) NOT NULL;
 END;

 |
 delimiter ;

它给了我一个错误:#1103 - Incorrect table name 'NEW'

3 个答案:

答案 0 :(得分:2)

来自文档:

每个表有4096列的硬限制...每个表(无论存储引擎如何)的最大行大小为65,535字节。

你能达到这些限制吗? 即使你不能,我建议你考虑设计,添加记录而不是新字段。然后你可以尝试PIVOT表 - 将行转换为字段,互联网上有许多透视示例,当然还有stackoverflow。

答案 1 :(得分:1)

在没有NEW.

的情况下尝试此操作
 ALTER TABLE user_access ADD type_name INT(2) NOT NULL;

答案 2 :(得分:1)

MySql中的触发器内不允许

ALTER TABLECREATE TABLE。所以无论如何它都行不通。