Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: NOT NULL и UNIQUE
 
 автор: serjinio   (07.10.2009 в 11:35)   письмо автору
 
 

Если полю "по умолчанию" стоит значение NOT NULL , то при попытке сделать его уникальным выскакивает ошибка ..почему?
#1062 - Duplicate entry 'NOT NULL' for key 2 

  Ответить  
 
 автор: cheops   (07.10.2009 в 12:08)   письмо автору
 
   для: serjinio   (07.10.2009 в 11:35)
 

Потому что поле не может принимать значение NULL. Да и смысла в этом нет - вы не сможете присвоить двум полям значение NULL одновременно. Если уж совсем глубоко копать, то ни одному полю нельзя присваивать NULL - это неопределенное значение, под которым может скрываться любое из уже существующих. С точки зрения логики базы данных - это недопустимо.

  Ответить  
 
 автор: Trianon   (07.10.2009 в 18:17)   письмо автору
 
   для: cheops   (07.10.2009 в 12:08)
 

Поле, на котором построен уникальный индекс, может оказываться в состоянии NULL, в отличие от поля, на котором построен индекс первичный. И поле можно устанавливать в состояние NULL , если оно не включено в первичный ключ.

При изменении описания поля с NULL на NOT NULL ему (во всех NULL-строках) присваивается значение DEFAULT. И если оно оказалось что таких строк не одна, или что уже были строки с таким значением в этом поле - сервер выполнять запрос откажется. Н ачто автор вопроса и нарвался.

Синтаксически установка поля в состояние NULL записывается, как присваивание ему этого псевдозначения. UPDATE tbl SET name=NULL WHERE id=13613

Общая логика БД при работе с полем в состоянии NULL - значение данной ячейки неизвестно.
Оказываясь аргументом операции или функции (кроме специально предназначенных для, типа COALESCE) распространяет себя на результат операции /функции, игнорируя значения других аргументов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования