#mysql
#mysql — сервер #mysql
Вопрос:
У меня есть простой триггер MySQL при ВСТАВКЕ. Я протестировал это в MySQL Workbench, и это работает.
use `my database`;
DROP TRIGGER if exists after_tablea_insert;
DELIMITER $$
CREATE TRIGGER after_tablea_insert
AFTER INSERT
ON `my_table` FOR EACH ROW
BEGIN
insert into my_new_table (columnA,columnB,columnC,columnD) values(new.columnA,
new.columnB,
new.columnC,
new.columnD);
END$$
Однако, когда новые данные вставляются в my_table с помощью внешнего канала данных, триггер вставляет только новые данные в my_table из columnA в my_new_table. ColumnB, ColumnC и ColumnD в my_new_table задаются как null.
Есть идеи, почему это может быть так?
База данных MySQL размещена в Google Cloud SQL. Это версия 5.7 в соответствии с требованиями Google Cloud SQL.
Типы данных: my_table columnA = char(36) PK, ColumnB-D = текст; my_new_table ColumnsA-D = текст
Комментарии:
1. Можете ли вы создать sqlfiddle, чтобы показать вашу проблему, потому что я не могу ее воспроизвести
2. Если это работает в workbench, то проблема в вашем канале. Для чего {text}??
3. @P.Salmon {текст} это для обозначения типа данных для каждого столбца. Не уверен, что это правильная практика писать как таковая, хотя
4. Похоже на опечатку в названиях столбцов. Покажите РЕАЛЬНУЮ структуру для обеих таблиц и РЕАЛЬНЫЙ код триггера.
5. «Не уверен, что писать как таковой является правильной практикой» — это не так и служит только для отвлечения