CREATE TABLE IF NOT EXISTS `customer` (
`id_customer` INT ZEROFILL NOT NULL auto_increment PRIMARY KEY ,
`fname` varchar(45) not NULL,
`lname` varchar(45) not NULL,
`bday` date not NULL,
`country` char(15) not NULL,
`address` varchar(50) not NULL,
`zip_code` varchar(10) not null
);
CREATE TABLE IF NOT EXISTS `inventory` (
`id_product` INT zerofill NOT NULL auto_increment PRIMARY KEY,
`model` varchar(45) not null,
`price_new` FLOAT not null,
`grade` char(10) not null,
`launch_year` year not null,
`final_price` FLOAT(8),
`stock` INT(5) not null
);
delimiter //
CREATE TRIGGER upd_check after insert ON inventory
FOR EACH ROW
BEGIN
IF inventory.grade = 'bad' THEN
update NEW.final_price = 2;
elseif inventory.grade = 'good' then
update new.final_price = 0;
END IF;
END;//
delimiter ;
Я хочу создать триггер, который после того, как я вставлю в инвентарь стола, если качество - это одно, он что-то делает, если это другое, он помещает какое-то другое значение. Но я получаю сообщение об ошибке Ошибка SQL [1054] [42S22]: Неизвестный столбец «оценка» в «списке полей». Почему?
Триггер не может обновить ту же таблицу, для которой он срабатывает.
Ох, мне нужен еще один стол посередине, чтобы найти способ. Хорошо
Если вы пытаетесь изменить значения в новой вставляемой строке, используйте триггер BEFORE INSERT
.
delimiter //
CREATE TRIGGER upd_check BEFORE insert ON inventory
FOR EACH ROW
BEGIN
IF NEW.grade = 'bad' THEN
SET NEW.final_price = 2;
elseif NEW.grade = 'good' then
SET NEW.final_price = 0;
END IF;
END;//
delimiter ;
Это дало мне ошибку SQL Error [1064] [42000]: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 5
Проверьте свой ввод. У меня работает db-fiddle.com/f/mNXSGiWQozGvHBz8aRdFe7/…
Я использовал то же, что и вы, я создал новую базу данных. Ошибка SQL [1064] [42000]: ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 5
Извините, была ошибка.