2

我有一张放书的桌子,每本书可以有多个副本,我想给每个副本一个副本号。

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。

4

2 回答 2

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)
);
于 2012-11-18T07:41:52.070 回答
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), ...)
于 2012-11-18T02:30:27.083 回答