Auto-increment は、新しいレコードがテーブルに挿入されるときに一意の番号を生成します。
通常、新しいレコードが挿入されるたびに主キー フィールドの値を自動的に作成したいと考えます。
テーブルに auto-increment フィールドを作成できます。
次の 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 ステートメントは、「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 ずつ増加するように指定するには、ID を IDENTITY(20,10) に変更します。
「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」列の値を指定する必要はありません (一意の値が自動的に追加されます)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」には一意の値が割り当てられます。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。
次の 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(20,10) に変更します。
「Persons」テーブルに新しいレコードを挿入する場合、「P_Id」列の値を指定する必要はありません (一意の値が自動的に追加されます)。
INSERT INTO Persons (FirstName,LastName)
VALUES ('Bill','Gates')
上記の SQL ステートメントは、新しいレコードを「persons」テーブルに挿入します。 「P_Id」には一意の値が割り当てられます。 「FirstName」列は「Bill」に設定され、「LastName」列は「Gates」に設定されます。
Oracle では、コードはもう少し複雑です。
シーケンス ペア (数値シーケンスを生成するオブジェクト) から auto-increment フィールドを作成する必要があります。
次の CREATE SEQUENCE 構文を使用してください:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
上記のコードは、1 から始まり 1 ずつ増加する seq_person という名前のシーケンス オブジェクトを作成します。 オブジェクトはパフォーマンスを向上させるために 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」に設定されます。