Триггер не работает - измените таблицу, чтобы добавить новый столбец перед вставкой в ​​него

Я делаю триггер, чтобы изменить таблицу, которая добавляет новый столбец к нему и вставляет в него значение.

Мой код выглядит так:

 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 ответа

Решение

Из документации:

Существует жесткое ограничение в 4096 столбцов на таблицу... Максимальный размер строки в каждой таблице (независимо от механизма хранения) составляет 65 535 байт.

Можете ли вы достичь этих ограничений? Даже если вы не можете, я бы посоветовал вам подумать о дизайне и добавить записи вместо новых полей. Тогда вы можете попробовать PIVOT таблицу - преобразовать строки в поля, в интернете есть много примеров сводок и, конечно, в stackru.

Попробуй это без NEW.

 ALTER TABLE user_access ADD type_name INT(2) NOT NULL;

ALTER TABLE или же CREATE TABLE не допускается внутри триггера в MySql. Так что в любом случае это не сработает.

Другие вопросы по тегам