直前でINSERTしたAUTO_INCREMENT属性を持つカラム情報を取り出すには
MySQLでテーブルのカラムの属性としてAUTO_INCREMENTを指定した場合、通常は、何も意識せずに指定された情報は、+1が実施されユニークな番号が振られます。また、このような情報は、プライマリーキー(PRIMARY KEY)として指定する場合が多いと思います。
さて、このようなテーブルに情報をINSERTした後、情報を取り出す時やリレーションを組みたいときは、この情報が必要なことが多々あります。
では、この情報を取り出すには、どうしたら良いでしょうか?
簡単です。以下のSQL文を発行してあげれば、直前にAUTO_INCREMENTで設定した情報を出力してくれます。
select last_insert_id() [from table name];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| > mysql -h=xxx -u=username -p=**** dbname
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 465
Server version: 5.1.36-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE TABLE `test_autoincrement` (
-> `id` int unsigned NOT NULL AUTO_INCREMENT,
-> `value` text NOT NULL,
-> PRIMARY KEY (`id`)
-> ) DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.06 sec)
mysql> insert into test_autoincrement(value) values('sample-data...');
Query OK, 1 row affected (0.02 sec)
mysql> select last_insert_id() from test_autoincrement;
+------------------+
| last_insert_id() |
+------------------+
| 1 |
+------------------+
1 row in set (0.02 sec)
mysql> insert into test_autoincrement(value) values('sample-data2...');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)
mysql>
|
1行目は、ログインコマンドです。-h=xxx -u=username -p=**** dbname
xxx:mysqlのホスト名
username:ログインするユーザ名
****:ログインするユーザのパスワード
dbname:使用するデータベース名
19行目,30行目で、直前にAUTO_INCREMENTで設定した情報を表示させています。
30行目の表現で、from table名をつけない場合でも、同じセッションの中で最新のものが取り出せるのでスレッドなどを使っていなければ問題はないと思います。
ただ、from table名をつけた方が間違いないです。
この記事を読んだ人は、こんな記事も読んでいます。:
コメント