「DB2 ID列に自動採番」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==DB2 ID列に自動採番== | + | ==[[DB2 ID列に自動採番]]== |
[[DB2]] | [[Database]] | | [[DB2]] | [[Database]] | | ||
5行目: | 5行目: | ||
===概要=== | ===概要=== | ||
− | *ID 列を使用すると、表に追加される個々の行に対し、固有の数値を | + | *ID 列を使用すると、表に追加される個々の行に対し、固有の数値を [[DB2]]・・ が自動的に生成 |
*個々の行の数値が固有であることを保証するには、ユニーク索引を作成するか、 主キーとして宣言 | *個々の行の数値が固有であることを保証するには、ユニーク索引を作成するか、 主キーとして宣言 | ||
− | *GENERATED ALWAYS として定義された ID 列は、常に DB2 データベース・マネージャーが生成する値に指定 | + | *GENERATED ALWAYS として定義された ID 列は、常に [[DB2]] データベース・マネージャーが生成する値に指定 |
− | *GENERATED BY DEFAULT として定義すると、アプリケーションが明示的に ID 列の値を指定できます。 | + | *GENERATED BY DEFAULT として定義すると、アプリケーションが明示的に ID 列の値を指定できます。 アプリケーションが値を指定しないと、[[DB2]] が値を生成 |
<blockquote>行が表に、指定された明示的な ID 列値で挿入される場合、 次の内部生成される値は更新されず、表内の既存の値と競合する可能性があります。</blockquote> | <blockquote>行が表に、指定された明示的な ID 列値で挿入される場合、 次の内部生成される値は更新されず、表内の既存の値と競合する可能性があります。</blockquote> | ||
===ID 列を定義=== | ===ID 列を定義=== | ||
− | * | + | *C[[R]]EATE TABLE ステートメントに AS IDENTITY 節を使用 |
*3 番目の列が ID 列 | *3 番目の列が ID 列 | ||
*値 "100" が ID 列に入れられます。 この表に行が追加されるごとに、値は 5 ずつ増 | *値 "100" が ID 列に入れられます。 この表に行が追加されるごとに、値は 5 ずつ増 | ||
− | + | C[[R]]EATE TABLE table (col1 INT, | |
col2 DOUBLE, | col2 DOUBLE, | ||
− | col3 INT NOT NULL | + | col3 INT NOT NULL GENE[[R]]ATED ALWAYS AS IDENTITY |
− | ( | + | (STA[[R]]T WITH 100, INC[[R]]EMENT BY 5)) |
2020年2月16日 (日) 04:24時点における最新版
DB2 ID列に自動採番
概要
- ID 列を使用すると、表に追加される個々の行に対し、固有の数値を DB2・・ が自動的に生成
- 個々の行の数値が固有であることを保証するには、ユニーク索引を作成するか、 主キーとして宣言
- GENERATED ALWAYS として定義された ID 列は、常に DB2 データベース・マネージャーが生成する値に指定
- GENERATED BY DEFAULT として定義すると、アプリケーションが明示的に ID 列の値を指定できます。 アプリケーションが値を指定しないと、DB2 が値を生成
<blockquote>行が表に、指定された明示的な ID 列値で挿入される場合、 次の内部生成される値は更新されず、表内の既存の値と競合する可能性があります。</blockquote>
ID 列を定義
- CREATE TABLE ステートメントに AS IDENTITY 節を使用
- 3 番目の列が ID 列
- 値 "100" が ID 列に入れられます。 この表に行が追加されるごとに、値は 5 ずつ増
CREATE TABLE table (col1 INT, col2 DOUBLE, col3 INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 100, INCREMENT BY 5))
© 2006 矢木浩人