SQL 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で増加するように指定するには、identityを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をAUTOINCREMENT(20,10)に変更してください:

「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」カラムに値を指定する必要はありません(自動的にユニークな値が追加されます):

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

上記の SQL ステートメントは "Persons" テーブルに新しいレコードを挿入します。"P_Id" はユニークな値に設定されます。"FirstName" は "Bill" に設定され、"LastName" カラムは "Gates" に設定されます。

Oracle 用の语法

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

自動インクリメントフィールドを作成するには、シーケンスオブジェクトを作成する必要があります(このオブジェクトは数字シーケンスを生成します)。

以下の CREATE SEQUENCE 语法を使用してください:

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

上記のコードは、名前が seq_person であるシーケンスオブジェクトを作成します。このオブジェクトは 1 から始まり、1 で増加します。このオブジェクトはパフォーマンスを向上させるために 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" に設定されます。