我有一张带书的桌子,每本书可以有多份副本,我想给每份副本一个副本号。
TABLE:
BOOK(book_pk, book_name, book_copy);
基本上每个book_pk都是唯一的,但如果有两行具有相同的book_name,则一个book_copy应设置为1,另一个设置为2。
TABLE ROWS:
1, AAA, 1
2, BBB, 1
3, AAA, 2
4, CCC, 1
5, BBB, 2
因此,当我插入相同book_name的新元组时,我想自动递增主键并跟踪copyNumber。
答案 0 :(得分:2)
尝试:
INSERT INTO Book (book_name, book_copy)
VALUES (
'AAAA',
(SELECT copy FROM ( SELECT IFNULL(MAX(book_copy),0)+1 as copy FROM Book) AS d)
);
答案 1 :(得分:1)
简短的版本是在MySQL中,它不能直接从数据库完成。也许最好用两个表格来描述。一个Book
表和一个BookCopy
表。 Book
表可以像您一样具有自动增量。 BookCopy
表也有自动增量,但引用回Book
表。通过这种方式,您可以拥有一本没有副本的图书,并且您无法使用BookCopy
来查看未经审核的Book
。
Book Table
Book(book_pk (auto increment), book_name, ...)
BookCopy Table
BookCopy(book_copy_pk (auto increment), book_pk (foreign key), ...)