Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/88: Рейтинг темы: голосов - 88, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 6

Триггер на изменение значения поля при добавлении записи в другую таблицу MySQL

21.11.2016, 18:46. Показов 16845. Ответов 1

Студворк — интернет-сервис помощи студентам
Работаю в phpMyAdmin

Ребят, такая проблема. Не понимаю в чем дело, т.к. я чайник в MySQL.

В общем, мне нужно изменить значение в столбце `Количество книг` в таблице `книги`, когда в таблицу `продажа` добавляется новая запись о продаже - сделать все с помощью ТРИГГЕРА


CREATE TABLE IF NOT EXISTS `книги` (
`Автор` varchar(100) NOT NULL,
`Название` varchar(100) NOT NULL,
`Год издания` date NOT NULL,
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Издательство` varchar(100) NOT NULL,
`Количество книг` int(11) NOT NULL,
`Цена` int(11) NOT NULL,
PRIMARY KEY (`ID`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `книги` (`Автор`, `Название`, `Год издания`, `ID`, `Издательство`, `Количество книг`, `Цена`) VALUES('Феоктистов Леонид', 'Большая энциклопедия астрономии', '2009-01-01', 2, 'Росмэн-Пресс', 10, 310);
INSERT INTO `книги` (`Автор`, `Название`, `Год издания`, `ID`, `Издательство`, `Количество книг`, `Цена`) VALUES('Иар Эльтеррус', 'Отзвуки серебряного ветра Мы - будем', '2009-01-01', 3, 'Альфа - книга', 10, 735);
INSERT INTO `книги` (`Автор`, `Название`, `Год издания`, `ID`, `Издательство`, `Количество книг`, `Цена`) VALUES('Лев Николаевич Толстой', 'Война и мир', '1996-01-01', 4, 'Лексика', 10, 1300);
INSERT INTO `книги` (`Автор`, `Название`, `Год издания`, `ID`, `Издательство`, `Количество книг`, `Цена`) VALUES('Михаил Афанасьевич Булгаков', 'Мастер и Маргарита', '2009-01-01', 5, 'АСТ', 10, 185);


CREATE TABLE IF NOT EXISTS `продажа` (
`КнигиID` int(11) NOT NULL,
`ПродавцыНомер трудовой книги` int(11) NOT NULL,
`Дата продажи` date NOT NULL,
`Номер сделки` int(11) NOT NULL AUTO_INCREMENT,
`Сумма` int(11) NOT NULL,
PRIMARY KEY (`Номер сделки`),
KEY `КнигиID` (`КнигиID`),
KEY `ПродавцыНомер трудовой книги` (`ПродавцыНомер трудовой книги`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `продажа` (`КнигиID`, `ПродавцыНомер трудовой книги`, `Дата продажи`, `Номер сделки`) VALUES(3, 70113047, '2016-01-01', '');

DELIMITER |
CREATE TRIGGER `update_knigi` AFTER INSERT ON `manual1`.`продажа`
FOR EACH ROW
BEGIN
UPDATE `manual1`.`книги`
SET `Количество книг` = (`Количество книг` - 1)
WHERE `книги`.`ID` = `продажа`.`КнигиID`;
END;

----если делаю так, что при добавлении записи в таблицу `продажа` пишет ошибку "#1054 - Unknown column 'продажа.КнигиID' in 'where clause'"

-----
DELIMITER |
CREATE TRIGGER `update_knigi` AFTER INSERT ON `manual1`.`продажа`
FOR EACH ROW
BEGIN
UPDATE `manual1`.`книги`
SET `Количество книг` = (`Количество книг` - 1)
WHERE `книги`.`ID`;
END;

----если так, то значения отнимаются у всех значений `Количество книг`.

Не знаю что делать, пожалуйста, помогите :с
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2016, 18:46
Ответы с готовыми решениями:

Триггер на обновление поля при добавлении записи в другую таблицу
Допустим на склад поступает товар, пытаюсь написать триггер, который будет к имеющемуся количеству товара прибавлять количество...

Нужен триггер, который будет обновлять одну таблицу при добавлении записи в другую
Нужен триггер, который срабатывает после того как добавлется запись в таблицу. Итак, имеется: Таблица Товар Таблица Производитель ...

Как создать триггер который обновляет запись в таблицы при добавлении записи в другую таблицу
Всем привет, нужна помощь с триггером, столкнулся с ним в первые до этого использовал процедуры, а диплом горит) История такая: ...

1
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
21.11.2016, 22:40
Зачем так много лишней информации? Вопрос изложен понятно.
В триггере befor_insert таблицы продажа выполнить запрос:
UPDATE таблица_книги SET количество_книг = количество_книг - NEW.количество_проданных_книг WHERE таблица_книги.код_книги = NEW.код_книги
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2016, 22:40
Помогаю со студенческими работами здесь

Изменение записи в таблице при добавлении записи в другую таблицу
Есть две таблицы TProduct(товары) и TIncoming(приход) с полями "наименование" и "количество". Нужно, чтобы при добавлении строки в...

Создать триггер на таблицу sdelka, который, при добавлении новой записи, добавит эту запись в другую
пытаюсь научиться создавать триггеры в бд, и т.к я полный чайник, мало чего получается. задача такая: создать триггер на таблицу...

Изменение значения счетчика при удалении и добавлении записей в таблицу
Здравствуйте. Есть программа на Билдере, связаная с базой Access. Если я удаляю запись в таблице, а потом добавляю новую, то сбивается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru