【发布时间】:2011-02-11 20:41:44
【问题描述】:
一个表是:
mysql> desc gifts;
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| giftID | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(80) | YES | | NULL | |
| filename | varchar(80) | YES | | NULL | |
| effectiveTime | datetime | YES | | NULL | |
+---------------+-------------+------+-----+---------+----------------+
以下是可以的:
mysql> insert into gifts
-> values (10, "heart", "heart_shape.jpg", now());
Query OK, 1 row affected (0.05 sec)
但是有没有办法不指定“10”...而让每个都是 11、12、13...?
我可以用
mysql> insert into gifts (name, filename, effectiveTime)
-> values ("coffee", "coffee123.jpg", now());
Query OK, 1 row affected (0.00 sec)
但列名需要全部指定。有没有办法不必指定它们并且主键的自动增量仍然有效?谢谢。
【问题讨论】:
-
虽然这是一种观点,但明确指定列名通常是一种很好的做法,这可以确保如果将来表以任何方式更改(例如添加了额外的列),预期值会进入预期的列。
标签: sql mysql insert primary-key auto-increment