MySQLの使用順序
、1 2、3、...、データテーブルとしてだけで一つのフィールドの増分主キーを持つことができ、あなたは追加のフィールドを実装したい場合は自動的に増加している、あなたが達成するためにMySQLのシーケンスを使用することができます:MySQLは整数のシーケンスです。
この章では、MySQLのシーケンスを使用する方法について説明します。
AUTO_INCREMENTを使用してください
MySQLの最も簡単な方法は、MySQLのAUTO_INCREMENTカラムの使用を定義するためのシーケンスを使用することです。
例
次の例では、自動的に増やすことができるのidの値を指定せずにデータテーブル昆虫、昆虫を作成します。
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected ); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO insect (id,name,date,origin) VALUES -> (NULL,'housefly','2001-09-10','kitchen'), -> (NULL,'millipede','2001-09-10','driveway'), -> (NULL,'grasshopper','2001-09-10','front yard'); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM insect ORDER BY id; +----+-------------+------------+------------+ | id | name | date | origin | +----+-------------+------------+------------+ | 1 | housefly | 2001-09-10 | kitchen | | 2 | millipede | 2001-09-10 | driveway | | 3 | grasshopper | 2001-09-10 | front yard | +----+-------------+------------+------------+ 3 rows in set (0.00 sec)
AUTO_INCREMENT値を取得します。
MySQLクライアントでは、テーブルのオートインクリメントに挿入された最後の値を取得するために、SQL LAST_INSERT_ID()関数を使用することができます。
PHPやPerlスクリプトでもの最後に挿入されたテーブルの自動インクリメントの値を取得するには、対応する機能を提供します。
PERLの例
AUTO_INCREMENTの値を取得するmysql_insertidプロパティを使用します。 例としては、次のとおりです:
$dbh->do ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
PHPの例
SQL文に値を取得するPHPはにmysql_insert_id()関数でAUTO_INCREMENTカラムを実行します。
mysql_query ("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
リセットシーケンス
あなたがテーブルに複数のレコードをデータを削除し、再配置するために残りのデータAUTO_INCREMENTカラムを願っていた場合は、あなたが成長してから列を削除することができ、それは達成するために再度追加します。 しかし、あなたは新しいレコードを持っている場合は非常に注意すべき操作が削除と同時に追加され、データの混乱があるかもしれません。 動作は次のとおりです
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
シーケンスの開始値を設定します。
通常の状況下ではシーケンスは1の値を開始しますが、100の開始値を指定する必要がある場合は、我々は次の文を達成することができます。
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected );
または、次の文によって達成成功にテーブルを作成することができます。
mysql> ALTER TABLE t AUTO_INCREMENT = 100;