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" に設定されます。