#mysql #triggers #quotation-marks #mysql-error-1292
Вопрос:
Я создал триггер, который вставляет строку в таблицу после удаления строки в другой таблице.
Вот мой спусковой крючок
CREATE TRIGGER trigger_delete_log_animal AFTER delete ON animal
FOR EACH ROW
INSERT INTO log_animais (momento, ocorrencia)
VALUES (now(), "The register '" old.nome_animal "' was deleted from the animal table");
Я хочу, чтобы nome_animal находился между одинарными кавычками.
Но я получаю следующую ошибку, когда удаляю строку из таблицы животных:
Error Code: 1292. Truncated incorrect DOUBLE value: 'The register ''
Я пытался изменить его на
'The register "' old.nome_animal '" was deleted from the animal table'
А также к
"The register '" old.nome_animal "' was deleted from the animal table"
Но это никуда не годится.
Что я делаю не так?
Ответ №1:
Не пытайтесь создавать строки с в своем SQL-коде.
Вместо этого используйте функцию CONCAT() :
VALUES (now(), CONCAT(
'The register '',
old.nome_animal,
'' was deleted from the animal table'));
И экранируйте '
символы, которые вы хотите использовать в своих строках
.
'Mrs. O'Leary's cow.'