|
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 6
|
|
Триггер на изменение значения поля при добавлении записи в другую таблицу MySQL21.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
|
|
| 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
|
|
| 21.11.2016, 22:40 | |
|
Помогаю со студенческими работами здесь
2
Создать триггер на таблицу sdelka, который, при добавлении новой записи, добавит эту запись в другую Изменение значения счетчика при удалении и добавлении записей в таблицу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 была полностью переписана на Си, в. . .
|