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