我有這是主要的ID。它有自動增量。默認值在MySQL表中ID
當過我嘗試進入例如像一個默認值:000 - 它不會啓動該號碼,但來自0,1,2,3等計數......
我怎樣才能讓000 ?
或者在我的情況下,我真的希望它的發票 - 說2011-000,並開始計數可以嗎?
任何想法??
我有這是主要的ID。它有自動增量。默認值在MySQL表中ID
當過我嘗試進入例如像一個默認值:000 - 它不會啓動該號碼,但來自0,1,2,3等計數......
我怎樣才能讓000 ?
或者在我的情況下,我真的希望它的發票 - 說2011-000,並開始計數可以嗎?
任何想法??
ALTER TABLE tablename AUTO_INCREMENT = 1
要使列包含000,您需要將其設置爲zerofill
。所以,用你的專欄的zerofill
選項來改變你的表格。
你可以閱讀更多關於ZEROFILL,
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
而且,ajreal建議,您將需要物理爲零更新列。
爲什麼你需要在0000和0001之間打擾?
PS - http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_no_auto_value_on_zero
NO_AUTO_VALUE_ON_ZERO影響AUTO_INCREMENT列的處理。通常,通過向其中插入NULL或0來爲列生成下一個序列號。 NO_AUTO_VALUE_ON_ZERO將此行爲抑制爲0,以便只有NULL纔會生成下一個序列號。
如果0已存儲在表的AUTO_INCREMENT列中,此模式可能很有用。 (順便說一句,存儲0不是推薦的做法。)例如,如果您使用mysqldump轉儲表並重新加載它,MySQL通常會在遇到0值時生成新的序列號,從而導致內容不同於那個被傾倒的人。重新加載轉儲文件之前啓用NO_AUTO_VALUE_ON_ZERO可解決此問題。 mysqldump現在會在其輸出中自動包含一個使NO_AUTO_VALUE_ON_ZERO啓用的語句,以避免此問題。
希望下面的意義沒有改變NO_AUTO_VALUE_ON_ZERO
...
mysql> create table invoice (years int(4) unsigned, seq int(4) unsigned zerofill not null auto_increment, primary key(years, seq)); Query OK, 0 rows affected (0.01 sec) mysql> insert into invoice values (2011, 0); Query OK, 1 row affected (0.00 sec) mysql> update invoice set seq=0; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> alter table invoice auto_increment=0; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into invoice values (2011, 0); Query OK, 1 row affected (0.00 sec) mysql> select * from invoice; +-------+------+ | years | seq | +-------+------+ | 2011 | 0000 | | 2011 | 0001 | +-------+------+ 2 rows in set (0.00 sec) mysql> insert into invoice values (2011, 0), (2011, 0); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from invoice; +-------+------+ | years | seq | +-------+------+ | 2011 | 0000 | | 2011 | 0001 | | 2011 | 0002 | | 2011 | 0003 | +-------+------+ 4 rows in set (0.00 sec)
我認爲是50%正確的(ZEROFILL是正確的) – ajreal 2011-01-10 05:28:44