SQL AUTO INCREMENT Field

❮ 前章へ 次章へ ❯

オート・インクリメントは、新しいレコードをテーブルに挿入するときに、ユニークな番号を生成することが可能です。


AUTO INCREMENT フィールド

AUTO INCREMENT フィールドは、新しいレコードを登録するたびに、主キーフィールドの値を自動的に作成します。

テーブルにオート・インクリメントフィールドを作成しようと思います。


MySQL の構文

次の SQL 文は、"Persons" テーブルにオート・インクリメント主キーフィールドの "ID" 列を定義します:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

MySQL は、オート・インクリメント機能を実行するのに、AUTO_INCREMENT キーワードを使用します。

デフォルトでは、AUTO_INCREMENT は 1 から始まり、新規レコードごとに 1 ずつ増加します。

違う値から AUTO_INCREMENT を開始したい場合は、次の SQL 文を使用します:

ALTER TABLE Persons AUTO_INCREMENT=100

"Persons" テーブルに新規レコードを挿入する場合には、 ユニークな値が自動的に追加されるので、"ID" の値を指定する必要はありません:

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上記 SQL 文は、"Persons" テーブルに新しいレコードを挿入します。 "ID" 列には、ユニークな値が割り当てられます。"FirstName" 列には "Lars" が設定され、"LastName" 列には "Monsen" が設定されます。


SQL Server の構文

次の SQL 文は、"Persons" テーブルにオート・インクリメント主キーフィールドの "ID" 列を定義します

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS SQL サーバは、オート・インクリメント機能を実行するのに、IDENTITY キーワードを使用します。

上記例では、IDENTITY は 1 から始まり、新規レコードごとに 1 ずつ増分されます。

チップ: "ID" 列に 10 から始まり 5 ずつ増加するよう指定するには、IDENTITY(10,5) に 変更します。

"Persons" テーブルに新規レコードを挿入する場合には、 ユニークな値が自動的に追加されるので、"ID" に対する値を指定する必要はありません:

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上記 SQL 文は、"Persons" テーブルに新しいレコードを挿入します。 "ID" 列には、ユニークな値が割り当てられます。"FirstName" 列には "Lars" が設定され、"LastName" 列には "Monsen" が設定されます。


Access の構文

次の SQL 文は、"Persons" テーブルにオート・インクリメント主キーフィールドの "ID" 列を 定義します:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS Access は、オート・インクリメント機能を実行するのに、AUTOINCREMENT キーワードを使用します。

デフォルトでは、AUTOINCREMENT は 1 から始まり、新規レコードごとに 1 ずつ増加します。

チップ: "ID" 列に 10 から始まり 5 ずつ増加するよう指定するには、AUTOINCREMENT(10,5) に 変更します。

"Persons" テーブルに新規レコードを挿入する場合に、 ユニークな値が自動的に追加されるので、"ID" に対する値を指定する必要はありません:

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

上記 SQL 文は、"Persons" テーブルに新しいレコードを挿入します。 "ID" 列には、ユニークな値が割り当てられます。 "FirstName" 列には "Lars" が設定され、"LastName" 列には "Monsen" が設定されます。


Oracle の構文

オラクルでのコードは、少々トリッキーです。

シーケンス・オブジェクト(このオブジェクトは連続した番号を生成する)を持つ、自動インクリメントフィールドを作成する必要があります。

次の CREATE SEQUENCE 構文を使用します:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

上記コードは、1 から始まり 1 ずつ増加する seq_person というシーケンス・オブジェクトを作成します。 また、パフォーマンスのために 10 個までの値をキャッシュします。 キャッシュ・オプションは、シーケンス値を、高速アクセスできるようメモリに保存する個数を指定します。

"Persons" テーブルに新しいレコードを挿入するためには、nextval 関数 (この関数は、seq_person シーケンスから次の値を取得します)を使用しなければなりません:

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

上記 SQL 文は、"Persons" テーブルに新しいレコードを挿入します。 "ID" 列には、seq_person シーケンスから次の番号が割り当てられます。 "FirstName" 列には "Lars" が設定され、"LastName" 列には "Monsen" が設定されます。


❮ 前章へ 次章へ ❯