我正在使用MySQL构建一个简单的视频游戏商店库存和销售数据库。 目前,我有一个库存表:
game_id count
1 5
2 2
3 1
4 7
和销售表
game_id price otherstuff
3 xxx xxxxx
2 xxxx xxxxxxxx
我想创建一个触发器,以检查将哪些game_id添加到sales表中。然后在库存表中将计数减少-1。我猜想它的“更新后”。
CREATE DEFINER=`root`@`localhost` TRIGGER `sales_AFTER_INSERT` AFTER INSERT ON `sales` FOR EACH ROW BEGIN
update inventory set count = count-1 where game_id = game_id;
END
测试完此脚本后,每次我插入一些新销售时,它只会使每个game_id计数减少-1。
答案 0 :(得分:1)
您需要使用NEW:
CREATE DEFINER=`root`@`localhost`
TRIGGER `sales_AFTER_INSERT`
AFTER INSERT ON `sales` FOR EACH ROW
BEGIN
update inventory set count = count-1 where game_id = new.game_id;
END
答案 1 :(得分:1)
查询中的game_id
不正确。如果要从修改后的记录中获取game_id
,则应使用NEW.game_id
CREATE DEFINER =`root`@`localhost`
TRIGGER `sales_AFTER_INSERT`
AFTER INSERT
ON `sales`
FOR EACH ROW
BEGIN
UPDATE inventory SET count = count - 1 WHERE game_id = NEW.game_id;
END