【问题标题】:MYSQL Trigger not adding count after inserting rows into another table将行插入另一个表后,MYSQL触发器不添加计数
【发布时间】: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


【解决方案1】:

触发器看起来像这样:

CREATE TRIGGER count_trigger AFTER INSERT ON ItemBook
FOR EACH ROW
BEGIN
    UPDATE count
        SET countBook = countBook + 1;
END;

对于这些信息,有一个包含一行的表格似乎很奇怪。但这似乎是你想要做的。

【讨论】:

    猜你喜欢
    • 2019-05-20
    • 2013-03-11
    • 2013-12-26
    • 2020-04-07
    • 2011-06-12
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多