Сбой при создании триггера Ошибка SQL [1054] [42S22]: Неизвестный столбец «оценка» в «списке полей»

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]: Неизвестный столбец «оценка» в «списке полей». Почему?

Извините, была ошибка.

rubenferr 15.12.2020 22:11

Триггер не может обновить ту же таблицу, для которой он срабатывает.

Barmar 15.12.2020 22:13

Ох, мне нужен еще один стол посередине, чтобы найти способ. Хорошо

rubenferr 15.12.2020 22:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
538
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы пытаетесь изменить значения в новой вставляемой строке, используйте триггер 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

rubenferr 16.12.2020 17:09

Проверьте свой ввод. У меня работает db-fiddle.com/f/mNXSGiWQozGvHBz8aRdFe7/…

Fred 16.12.2020 19:35

Я использовал то же, что и вы, я создал новую базу данных. Ошибка SQL [1064] [42000]: ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 5

rubenferr 16.12.2020 22:36

Другие вопросы по теме

Похожие вопросы