Auto-increment は、新しいレコードがテーブルに挿入されるときに一意の番号を生成します。

AUTO INCREMENT フィールド

通常、新しいレコードが挿入されるたびに主キー フィールドの値を自動的に作成したいと考えます。

テーブルに auto-increment フィールドを作成できます。

MySQL の構文

次の SQL ステートメントは、「Persons」テーブルの「P_Id」列を auto-increment 主キーとして定義します。

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

MySQL は AUTO_INCREMENT キーワードを使用して auto-increment タスクを実行します。

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

別の値で AUTO_INCREMENT シーケンスを開始するには、次の SQL 構文を使用します。

ALTER TABLE Persons AUTO_INCREMENT=100

「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」には一意の値が割り当てられます。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。

SQL Server の構文

次の SQL ステートメントは、「Persons」テーブルの「P_Id」列を auto-increment 主キーとして定義します。

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

MS SQL は、IDENTITY キーワードを使用して auto-increment タスクを実行します。

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

「P_Id」列が 20 から始まり 10 ずつ増加するように指定するには、ID を IDENTITY(20,10) に変更します。

「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」には一意の値が割り当てられます。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。

Access の構文

次の SQL ステートメントは、「Persons」テーブルの「P_Id」列を auto-increment 主キーとして定義します。

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

MS Access は、AUTOINCREMENT キーワードを使用して auto-increment タスクを実行します。

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

「P_Id」列が 20 から始まり 10 ずつ増加するように指定するには、自動インクリメントを AUTOINCREMENT(20,10) に変更します。

「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」列の値を指定する必要はありません (一意の値が自動的に追加されます)。

INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')

上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」には一意の値が割り当てられます。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。

Oracle の構文

Oracle では、コードはもう少し複雑です。

シーケンス ペア (数値シーケンスを生成するオブジェクト) から auto-increment フィールドを作成する必要があります。

次の CREATE SEQUENCE 構文を使用してください:

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

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

「persons」テーブルに新しいレコードを挿入するには、nextval 関数 (seq_person シーケンスから次の値を取得します) を使用する必要があります。

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

上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」の割り当ては、seq_person シーケンスの次の番号です。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。