Подтвердить что ты не робот

Запуск 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 '

4b9b3361

Ответ 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;