【发布时间】:2021-09-15 08:30:20
【问题描述】:
这是这个问题的延续:Insert data into a table with a foreign key SQL
在向表中插入一行后,我需要创建一个更新计数器变量的触发器。计数器变量跟踪有多少新行插入到 ItemBook 表中。但是,运行脚本后,触发器似乎不起作用。另外,如果我已经创建了这个触发器,我该如何重用它?
CREATE TABLE count (
countBook INT DEFAULT 0 NOT NULL,
);
CREATE
TRIGGER count_trigger AFTER INSERT
ON ItemBook
FOR EACH ROW
UPDATE count
SET countBook = (SELECT COUNT(*) FROM Itembook)
INSERT INTO Item
VALUES('Clippers','amazon.com', 'hair clippers');
SET SQL_SAFE_UPDATES = 0;
INSERT INTO ItemBook
VALUES('Clippers','Bob')
SET SQL_SAFE_UPDATES = 1;
SELECT * FROM count;
运行脚本后,countBook 列不返回任何内容。此外,如果我再次尝试重新运行此脚本,它会说触发器已经存在(在创建它之后)。如何重复使用此触发器?
【问题讨论】:
-
为什么需要一张桌子?您可以在需要计数时使用
SELECT COUNT(*) FROM Itembook。 -
我想知道如何使用触发器和计数更新单独表中的字段(countBook)
-
您是否在
count中插入了一行?UPDATE将更新现有行,不会创建新行。 -
您在此处发布的代码有语法错误 - 它根本不起作用。如果您更正它们,它会起作用,但前提是
count中已经存在一个行供触发器更新。
标签: mysql sql database mysql-workbench backend