Значение по умолчанию для enum, когда ему присваивается значение, отсутствующее в перечислении

0

Есть ли способ в таблице MySQL присвоить значение по умолчанию, если этому поле присвоено значение, не входящее в перечисление?

CREATE TABLE `comments` (
  `status` enum('approved','moderated','unmoderated') NOT NULL DEFAULT 'unmoderated'
);

Работает, если status не задано при создании, но если вы установите его на что-то не в перечислении или NULL, оно будет "пустым" (оно не похоже на NULL). Я ожидал бы, что это будет "unmoderated", если я установил его в NULL, так как он не может быть нулевым. Не уверен, что это имеет смысл. Нужно ли мне дезинфицировать мои данные перед вставкой, чтобы убедиться, что значение существует в перечислении в первую очередь?

UPDATE comments SET status = NULL;
UPDATE comments SET status = 'not_in_there';
Теги:

1 ответ

2
Лучший ответ

Если вы попытаетесь установить поле ENUM в значение, не входящее в список определений, оно будет вставлено как индекс 0, пустая строка. Значение по умолчанию входит в игру, если для этого столбца не указано значение.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню