为了说明我的问题,我将使用作者和书籍的类比。

我有 2 个表“作者”和“书”。作者是独一无二的,并且书籍使用外键约束与特定作者相关联。

我想知道是否有可能在“books”表中有一列名为“booknum”的列在单个作者的子集中自动递增。因此,如果该表有 100 行并且我插入了作者的第 4 本书,那么它会将 4 放入“booknum”列中。

例如,如果书籍表有 6 行:

id | authors_id | booknum | name

1  | 1          | 1       | "hello"

2  | 1          | 2       | "goodbye"

3  | 2          | 1       | "booktitle"

4  | 3          | 1       | "more title"

5  | 1          | 3       | "nametwo"

6  | 2          | 2       | "nameone"

这在 mysql 中是可能的,还是我需要去检查最后创建的书并在添加书时手动增加?

最佳答案

您可以使用触发器:

CREATE TRIGGER biBooks
  BEFORE INSERT ON books
  FOR EACH ROW SET NEW.booknum = (
    SELECT COALESCE(MAX(booknum), 0) + 1
      FROM books
      WHERE authors_id = NEW.authors_id
  )
;

关于mysql - 如何在表 MYSQL 的子集中自动递增,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10879104/

10-12 14:25