MySQL Trigger не знает значение по умолчанию - PullRequest
3 голосов
/ 22 марта 2012

Я использую этот триггер

delimiter ||
create TRIGGER column_a_to_default 
BEFORE INSERT ON `property`
FOR EACH ROW
BEGIN  
  IF NEW.primary_image = '' THEN
    SET NEW.primary_image = default(NEW.primary_image);
  END IF;
END;
||
delimiter ;

Если я вставлю в таблицу, триггер выдаст ошибку:

Поле 'primary_image' не имеет значения по умолчанию.

Но это так!

Что здесь не так? Похоже, что триггер не знает значения по умолчанию!

EDIT

Скрипт создания таблицы

CREATE TABLE IF NOT EXISTS `property` (
  `id` varchar(10) NOT NULL,
  `images` text NOT NULL,
  `primary_image` varchar(100) NOT NULL DEFAULT '../no-image.png',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Не default(property.primary_image) не работает?

(получение значения по умолчанию для таблицы Real, а не NEW для таблицы хранения)

1 голос
/ 22 марта 2012

Как-то не получается.

Попробуйте этот обходной путь -

  IF NEW.primary_image = '' THEN
    SELECT COLUMN_DEFAULT INTO @def
      FROM information_schema.COLUMNS
    WHERE
      table_schema = 'database_name'
      AND table_name = 'property'
      AND column_name = 'primary_image';
    SET NEW.primary_image = @def;
  END IF;
...