SQL AUTO INCREMENTフィールド
Auto-increment は、新しいレコードがテーブルに挿入されるときに一意の番号を生成します。
AUTO INCREMENT フィールド
通常、新しいレコードを挿入するたびに主キーフィールドの値を自動的に作成したいと考えます。
テーブルに auto-increment フィールドを作成できます。
MySQL での構文
次の SQL 文は、"Persons" テーブルの "ID" 列を auto-increment 主キーフィールドとして定義します。
(
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 タスクを実行します。
デフォルトでは、AUTO_INCREMENT の開始値は 1 で、新しいレコードごとに 1 ずつ増加します。
AUTO_INCREMENT シーケンスを他の値から開始するには、次の SQL 構文を使用します。
"Persons" テーブルに新しいレコードを挿入する際、"ID" 列に値を指定する必要はありません(一意の値が自動的に追加されます)。
VALUES ('Lars','Monsen')
上記の SQL 文は、"Persons" テーブルに新しいレコードを挿入します。"ID" 列には一意の値が割り当てられます。"FirstName" 列は "Lars" に設定され、"LastName" 列は "Monsen" に設定されます。
SQL Server での構文
次の SQL 文は、"Persons" テーブルの "ID" 列を auto-increment 主キーフィールドとして定義します。
(
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 キーワードを使用して auto-increment タスクを実行します。
上記の例では、IDENTITY の開始値は 1 で、新しいレコードごとに 1 ずつ増加します。
ヒント:"ID" 列を 10 から始めて 5 ずつ増加させるには、identity を IDENTITY(10,5) に変更してください。
"Persons" テーブルに新しいレコードを挿入する際、"ID" 列に値を指定する必要はありません(一意の値が自動的に追加されます)。
VALUES ('Lars','Monsen')
上記の SQL 文は、"Persons" テーブルに新しいレコードを挿入します。"ID" 列には一意の値が割り当てられます。"FirstName" 列は "Lars" に設定され、"LastName" 列は "Monsen" に設定されます。
Access での構文
次の SQL 文は、"Persons" テーブルの "ID" 列を auto-increment 主キーフィールドとして定義します。
(
ID Integer 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 ずつ増加します。
ヒント:"ID" 列を 10 から始めて 5 ずつ増加させるには、autoincrement を AUTOINCREMENT(10,5) に変更してください。
"Persons" テーブルに新しいレコードを挿入する際、"ID" 列に値を指定する必要はありません(一意の値が自動的に追加されます)。
VALUES ('Lars','Monsen')
上記の SQL 文は、"Persons" テーブルに新しいレコードを挿入します。"ID" 列には一意の値が割り当てられます。"FirstName" 列は "Lars" に設定され、"LastName" 列は "Monsen" に設定されます。
Oracle での構文
Oracle では、コードは少し複雑です。
sequence オブジェクト(数値シーケンスを生成するオブジェクト)を使用して auto-increment フィールドを作成する必要があります。
次の CREATE SEQUENCE 構文を使用してください。
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
上記のコードは、seq_person という名前の sequence オブジェクトを作成します。これは 1 から始まり 1 ずつ増加します。このオブジェクトはパフォーマンスを向上させるために 10 個の値をキャッシュします。cache オプションは、アクセス速度を向上させるためにいくつのシーケンス値を保存するかを指定します。
"Persons" テーブルに新しいレコードを挿入するには、nextval 関数(seq_person シーケンスから次の値を取得する関数)を使用する必要があります。
VALUES (seq_person.nextval,'Lars','Monsen')
上記の SQL 文は、"Persons" テーブルに新しいレコードを挿入します。"ID" 列には seq_person シーケンスからの次の番号が割り当てられます。"FirstName" 列は "Lars" に設定され、"LastName" 列は "Monsen" に設定されます。
その他の拡張