私はプライマリであるIDを持っています。自動インクリメントがあります。
たとえば、000のようなデフォルト値を入力しようとすると、その数値からではなく、0、1、2、3などからカウントが開始されます...
どうすれば000にできますか?
または、私の場合、請求書に本当に必要です-2011-000と言って、カウントを開始することは可能ですか??
何か案は??
列に 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 のみが次のシーケンス番号を生成するようにします。
このモードは、テーブルの 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 秒)
ALTER TABLE tablename AUTO_INCREMENT = 1