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

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

21.11.2016, 18:46. Просмотров 9687. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 18:46
Ответы с готовыми решениями:

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

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

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

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

1
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 19
21.11.2016, 22:40 2
Зачем так много лишней информации? Вопрос изложен понятно.
В триггере befor_insert таблицы продажа выполнить запрос:
UPDATE таблица_книги SET количество_книг = количество_книг - NEW.количество_проданных_книг WHERE таблица_книги.код_книги = NEW.код_книги
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2016, 22:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.