значение по умолчанию в идентификаторе таблицы MySQL - PullRequest
0 голосов
/ 10 января 2011

У меня есть идентификатор, который является основным. Имеет автоматическое увеличение.

Всякий раз, когда я пытаюсь ввести значение по умолчанию, например, 000: оно начинается не с этого числа, а с 0,1,2,3 и т. Д. ...

как я могу сделать это 000?

Или в моем случае я действительно хочу выставить счет - скажем, 2011-000 и начать подсчет, возможно ли это?

есть идеи ??

Ответы [ 3 ]

1 голос
/ 10 января 2011

Чтобы ваша колонка содержала 000, вам нужно сделать ее zerofill.Итак, измените вашу таблицу с параметром zerofill для вашего столбца.

Вы можете узнать больше о zerofill,

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

Кроме того, как предполагает ajreal, вам нужно физически обновить столбец до нуля.

0 голосов
/ 10 января 2011

Почему вам нужно беспокоиться между 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)
0 голосов
/ 10 января 2011
ALTER TABLE tablename AUTO_INCREMENT = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...