Запуск MySQL до значения Insert Checking
У меня есть таблица staff
с столбцом office
. В настоящее время столбец office
не принимает значения NULL. Приложение, сохраняющееся в этой таблице, имеет ошибку, которая означает, что, когда персоналу не назначен офис, он пытается вставить в таблицу значение NULL.
Мне было предложено использовать триггер для перехвата вставки в таблицу staff
и проверить, является ли значение office
NULL и заменить его значением N/A
.
Ниже моя попытка до сих пор, но у меня есть error
в попытке реализовать. Любые идеи о том, как разрешить это.
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL)
INSERT INTO Staff SET office="N/A";
END IF
END;
Ошибка:
Ошибка базы данных MySQL: у вас есть ошибка в синтаксисе SQL; проверить руководство, соответствующее вашей версии сервера MySQL для правильного синтаксис для использования рядом с "INSERT INTO Staff SET office =" N/A "; END '
Ответы
Ответ 1
Сначала измените таблицу, чтобы разрешить NULL:
ALTER TABLE Staff MODIFY office CHAR(40) DEFAULT "N/A";
(Измените CHAR(40)
на все, что подходит.) Затем вы можете использовать в качестве триггера:
CREATE TRIGGER staffOfficeNullReplacerTrigger
BEFORE INSERT
ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL) THEN
SET NEW.office = "N/A";
END IF
Ответ 2
Не должно быть что-то вроде этого:
DELIMITER $$
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL) THEN
INSERT INTO Staff(office) VALUES("N/A");
END IF;
END$$
Ответ 3
CREATE TRIGGER staffOfficeNullReplacerTrigger BEFORE INSERT ON Staff
FOR EACH ROW BEGIN
IF (NEW.office IS NULL)
INSERT INTO Staff SET office="N/A";
END IF
; добавьте пол двоеточия после END IF
END;