3

私の問題を説明するために、著者と本の類推を使用します。

「著者」と「本」の2つのテーブルがあります。著者は一意であり、書籍は外部キー制約を使用して特定の著者に関連付けられています。

単一の著者のサブセット内で自動インクリメントする「books」テーブルに「booknum」という列を作成できるかどうか疑問に思っていました。したがって、テーブルに 100 行があり、著者の 4 冊目の本を挿入すると、「booknum」列に 4 が入力されます。

デシベル画像

たとえば、books テーブルに 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内で可能ですか、それとも最後に作成されたブックを確認して、ブックを追加するときに手動でインクリメントする必要がありますか?

4

2 に答える 2

7

トリガーを使用できます:

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
  )
;
于 2012-06-04T13:07:05.430 に答える