0

私はプライマリであるIDを持っています。自動インクリメントがあります。

たとえば、000のようなデフォルト値を入力しようとすると、その数値からではなく、0、1、2、3などからカウントが開始されます...

どうすれば000にできますか?

または、私の場合、請求書に本当に必要です-2011-000と言って、カウントを開始することは可能ですか??

何か案は??

4

3 に答える 3

1

列に 000 を含めるには、それを作成する必要がありますzerofill。したがって、zerofill列のオプションを使用してテーブルを変更します。

zerofill について詳しく読むことができます。

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

また、ajreal が提案したように、列を物理的にゼロに更新する必要があります。

于 2011-01-10T05:23:57.540 に答える
0

なぜ 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 のみが次のシーケンス番号を生成するようにします。

このモードは、テーブルの AUTO_INCREMENT 列に 0 が格納されている場合に役立ちます。(ちなみに、0 を格納することは推奨されません。) たとえば、mysqldump を使用してテーブルをダンプしてから再ロードすると、MySQL は通常、0 の値に遭遇すると新しいシーケンス番号を生成し、テーブルの内容が異なるものになります。捨てられたもの。ダンプ ファイルをリロードする前に NO_AUTO_VALUE_ON_ZERO を有効にすると、この問題が解決します。mysqldump は、この問題を回避するために、NO_AUTO_VALUE_ON_ZERO を有効にするステートメントを出力に自動的に含めるようになりました。

以下が変更なしで意味をなすことを願っていますNO_AUTO_VALUE_ON_ZERO...

mysql> テーブル請求書を作成 (年 int(4) 署名なし、
seq int(4) unsigned zerofill not null auto_increment,
主キー (年、seq));
クエリ OK、影響を受ける行は 0 (0.01 秒)

mysql> 請求書の値に挿入 (2011, 0);
クエリ OK、影響を受ける 1 行 (0.00 秒)

mysql> インボイス セット seq=0 を更新します。
クエリ OK、影響を受ける 1 行 (0.00 秒)
一致した行: 1 変更された: 1 警告: 0

mysql> テーブル請求書 auto_increment=0 を変更します。
クエリ OK、影響を受ける 1 行 (0.00 秒)
レコード: 1 重複: 0 警告: 0

mysql> 請求書の値に挿入 (2011, 0);
クエリ OK、影響を受ける 1 行 (0.00 秒)

mysql> 請求書から * を選択します。
+------+------+
| | 年 | 年 シーケンス |
+------+------+
| | 2011年 | 0000 |
| | 2011年 | 0001 |
+------+------+
2 行セット (0.00 秒)

mysql> 請求書の値に挿入 (2011, 0), (2011, 0);
クエリ OK、影響を受ける 2 行 (0.00 秒)
レコード: 2 重複: 0 警告: 0

mysql> 請求書から * を選択します。
+------+------+
| | 年 | 年 シーケンス |
+------+------+
| | 2011年 | 0000 |
| | 2011年 | 0001 |
| | 2011年 | 0002 |
| | 2011年 | 0003 |
+------+------+
4 行セット (0.00 秒)
于 2011-01-10T05:36:44.353 に答える
0
ALTER TABLE tablename AUTO_INCREMENT = 1
于 2011-01-10T05:13:18.443 に答える