为了说明我的问题,我将使用作者和书籍的类比。
我有 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/