オート・インクリメントは、新しいレコードをテーブルに挿入するときに、ユニークな番号を生成することが可能です。
AUTO INCREMENT フィールドは、新しいレコードを登録するたびに、主キーフィールドの値を自動的に作成します。
テーブルにオート・インクリメントフィールドを作成しようと思います。
次の 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 文は、"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" が設定されます。
次の 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" が設定されます。
オラクルでのコードは、少々トリッキーです。
シーケンス・オブジェクト(このオブジェクトは連続した番号を生成する)を持つ、自動インクリメントフィールドを作成する必要があります。
次の 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" が設定されます。