SQL AUTOINCREMENTフィールド
AUTOINCREMENTフィールド
自動インクリメントを使用すると、新しいレコードがテーブルに挿入されたときに一意の番号が自動的に生成されます。
多くの場合、これは、新しいレコードが挿入されるたびに自動的に作成される主キーフィールドです。
MySQLの構文
次のSQLステートメントは、「Personid」列を「Persons」テーブルの自動インクリメント主キーフィールドとして定義しています。
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQLは、AUTO_INCREMENT
キーワードを使用して自動インクリメント機能を実行します。
デフォルトでは、の開始値AUTO_INCREMENT
は1であり、新しいレコードごとに1ずつ増加します。
AUTO_INCREMENT
シーケンスを別の値で開始するには、次のSQLステートメントを使用します。
ALTER TABLE Persons AUTO_INCREMENT=100;
「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません(一意の値が自動的に追加されます)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。「Personid」列には一意の値が割り当てられます。「FirstName」列は「Lars」に設定され、「LastName」列は「Monsen」に設定されます。
SQLServerの構文
次のSQLステートメントは、「Personid」列を「Persons」テーブルの自動インクリメント主キーフィールドとして定義しています。
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Serverは、IDENTITY
キーワードを使用して自動インクリメント機能を実行します。
上記の例では、の開始値
IDENTITY
は1であり、新しいレコードごとに1ずつ増加します。
ヒント:「Personid」列が値10から始まり、5ずつ増加するように指定するには、値をに変更しIDENTITY(10,5)
ます。
「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません(一意の値が自動的に追加されます)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。「Personid」列には一意の値が割り当てられます。「FirstName」列は「Lars」に設定され、「LastName」列は「Monsen」に設定されます。
アクセスの構文
次のSQLステートメントは、「Personid」列を「Persons」テーブルの自動インクリメント主キーフィールドとして定義しています。
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Accessは、AUTOINCREMENT
キーワードを使用して自動インクリメント機能を実行します。
デフォルトでは、の開始値AUTOINCREMENT
は1であり、新しいレコードごとに1ずつ増加します。
ヒント:「Personid」列を値10から開始し、5ずつインクリメントするように指定するには、自動インクリメントをに変更します
AUTOINCREMENT(10,5)
。
「Persons」テーブルに新しいレコードを挿入するために、「Personid」列の値を指定する必要はありません(一意の値が自動的に追加されます)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。「Personid」列には一意の値が割り当てられます。「FirstName」列は「Lars」に設定され、「LastName」列は「Monsen」に設定されます。
Oracleの構文
Oracleでは、コードはもう少しトリッキーです。
シーケンスオブジェクトを使用して自動インクリメントフィールドを作成する必要があります(このオブジェクトは数列を生成します)。
次のCREATE SEQUENCE
構文を使用します。
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
上記のコードは、seq_personというシーケンスオブジェクトを作成します。このオブジェクトは1から始まり、1ずつ増加します。また、パフォーマンスのために最大10個の値をキャッシュします。キャッシュオプションは、アクセスを高速化するためにメモリに保存されるシーケンス値の数を指定します。
「Persons」テーブルに新しいレコードを挿入するには、nextval関数を使用する必要があります(この関数はseq_personシーケンスから次の値を取得します)。
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
上記のSQLステートメントは、「Persons」テーブルに新しいレコードを挿入します。「Personid」列には、seq_personシーケンスの次の番号が割り当てられます。「FirstName」列は「Lars」に設定され、「LastName」列は「Monsen」に設定されます。