MySQL 触发器:从 table 2 中删除或更新后从 table 1 中删除

MySQL TRIGGER : Delete or Update from table 2 after delete from table 1

我有两个 table :

Table 1

Book's Name Publications
Poem A
Novel A
Math B

和Table 2

Publications Number of Books
A 2
B 1

现在,我想编写一个触发器,在从 Table 1 和 Number of books = 0 中删除后,从 table 2 中删除该行,如果 Number of books 不为空则更新值书籍数量。

例如

1.delete 来自 Table 1 其中 Bookname=poem

2.delete 来自 Table 1 其中 Bookname=Math

那么Table2会变成这样

Publications Number of Books
A 1

我没有足够的声誉来发表评论,但两位评论者是正确的,我会为 Table 2 使用视图而不是 table。例如:

CREATE VIEW dbo.vwTable2
AS
    SELECT Publications, COUNT(*) BooksNumber
    FROM Table1
    GROUP BY Publications

如果它必须是触发器,这应该可以解决问题。这有点老套,但这是您想要以一种方式解决问题时必须付出的代价。我是用 mssql 写的,所以可能需要转换成 mysql,因为我不太熟悉它。

CREATE TRIGGER dbo.trUpdateTable2 ON dbo.Table1
AFTER INSERT
    ,UPDATE
    ,DELETE
AS
BEGIN
    SET NOCOUNT ON;

    TRUNCATE TABLE dbo.Table2

    INSERT INTO dbo.Table2
    SELECT Publications, COUNT(*) BooksNumber
    FROM dbo.Table1
    GROUP BY Publications

END;