2011-01-10 2 views
0

У меня есть идентификатор, который является основным. Он имеет автоматическое увеличение.Значение по умолчанию в таблице mysql id

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

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

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

любые идеи?

ответ

0
ALTER TABLE tablename AUTO_INCREMENT = 1 
1

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

Вы можете прочитать больше о ZEROFILL,

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

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

+0

Я думаю, 50% правильно (ZEROFILL правильно) – ajreal

+0

@ajreal: Спасибо, вы можете сказать мне о моей ошибке выше, так что я могу позаботиться об этом в будущем. Это станет для меня новым обучением. – Nik

+0

Я не думаю, что можно установить auto_increment в ноль (если вы физически не обновите его до нуля) – ajreal

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 генерирует следующий порядковый номер.

Этот режим может быть полезен, если 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)
Смежные вопросы