最新のWeb開発のチュートリアル
 

SQL AUTO INCREMENTフィールド


自動インクリメントは、新規レコードがテーブルに挿入されたときに一意の番号を生成することを可能にします。


AUTO INCREMENTフィールド

非常に多くの場合、我々は、主キーフィールドの値が自動的に新しいレコードが挿入されるたびに作成されるようにしたいと思います。

私たちは、テーブルに自動インクリメントフィールドを作成したいと思います。


MySQLの構文

次のSQL文を定義"ID"で自動インクリメントの主キーフィールドであることが列を"Persons"の表:

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文を定義"ID"で自動インクリメントの主キーフィールドであることが列を"Persons"の表:

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 Serverが自動インクリメント機能を実行するためにIDENTITYキーワードを使用しています。

上記の例では、IDの初期値は1であり、それぞれの新しいレコードのために1ずつ増加します。

ヒント:ように指定するには"ID"列がIDENTITY(10,5)に変更し、5によって値10と増分で開始する必要があります。

新しいレコードを挿入するには"Persons"のテーブル、我々はの値を指定する必要はありません"ID"一意の値が自動的に追加されます)カラム:

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

SQLステートメントは、上記に新しいレコードを挿入する"Persons"のテーブル。 "ID"欄には、一意の値が割り当てられます。 "FirstName"欄には、に設定されることになろう"Lars""LastName"欄には、に設定されることになろう"Monsen"


アクセスのための構文

次のSQL文を定義"ID"で自動インクリメントの主キーフィールドであることが列を"Persons"の表:

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"列はAUTOINCREMENT(10,5)にオートインクリメントを変更し、5によって値10と増分で開始する必要があります。

新しいレコードを挿入するには"Persons"のテーブル、我々はの値を指定する必要はありません"ID"一意の値が自動的に追加されます)カラム:

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

SQLステートメントは、上記に新しいレコードを挿入する"Persons"のテーブル。 "P_Id"列には、一意の値が割り当てられます。 "FirstName"欄には、に設定されることになろう"Lars""LastName"欄には、に設定されることになろう"Monsen"


Oracle用の構文

Oracleではコードは少しトリッキーです。

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

以下をCREATE SEQUENCEの構文を使用します。

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

上記のコードは、1から始まり、それはまた、パフォーマンスのために10個までの値をキャッシュします1ずつ増加しますseq_personと呼ばれるシーケンス・オブジェクトを作成します。 キャッシュオプションは、多くのシーケンス値は、より高速なアクセスのためにメモリに格納される方法を指定します。

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

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

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