Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите разобраться новичку!!


Автор: tralfamador 14.9.2007, 14:26
У меня в учебнике ("Букварь по PHP и MySQL") в демонстрационном примере написано:

... входим в командную строку MySQL, и выполняем команды:

mysql > CREATE DATABASE mydb;
mysql> CREATE TABLE employees
( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT,
  ......................................
 ..................................................


Нет ли в строке "DEFAULT '0' NOT NULL"  противоречия?
И надо ли у автоинкрементного поля задавать NOT NULL?

Автор: Бонифаций 14.9.2007, 14:35
0 это не NULL. 
У автоинкрементного поля синтаксически можно задавать и default и not null но смысла в этом нет. И кстати id tinyint  - это тоже потенциально опасно. Слишкой маленький тип. Лучше все же int.

Автор: muzer 15.9.2007, 14:46
default для auto_increment? smile выкиньте этот учебник быстрее, а лучше сожгите.

1. так нельзя
2. потому что: default - это значение, которое будет добавлено в таблицу, если в запросу insert или replace не будет указано значение, которое нужно присвоить данному полю, auto_increment - это частный случай механизма defsult значений, если в запросе не указано значение для данного поля, то ему будет присвоено значение предыдущего/максимального (точнее указанного в свойстве auto_increment для таблицы) + 1. Поэтому запись default 0 auto_increment - это противоречие, на которое и ругается mysql. А вот указание not null - это правильно и хорошо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)