SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.05.2011 16:23:01

terraman
Участник
Зарегистрирован: 30.05.2011
Сообщений: 4

insert и null

Во первых приветствую всех!

Назрел у меня несложный вопрос сразу два примера:

1.

insert into test(text, id) values(null, null);


2.
insert into test(text, id) values(null, text+5);


Колонка text это простая varchar колонка, а id это (int, primary key, auto_increment)

Первый пример работает. Второй пример не работает, пишет что id не можнт быть null, вот это и проблема в первом случае я ему передаю null и всё работает, а во втором случае null получается в результате выражения. Почему же он его не принимает.

Неактивен

 

#2 31.05.2011 15:46:08

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: insert и null

Приведите, пожалуйста, целиком текст ошибки и её код как это выдаёт майка.

Неактивен

 

#3 31.05.2011 16:45:19

terraman
Участник
Зарегистрирован: 30.05.2011
Сообщений: 4

Re: insert и null

desc test;

id     |  int(11)          |  NO   |  PRI  |  NULL  |  auto_increment  |
text  |  varchar(100)  |  YES  |       |  NULL  |                         |



Ошибка:
#1048 - Column 'id' cannot be null
Но это понятно и из столбика "Null" структуры таблицы.
Другое делу почему он так реагирует на null в результате выражения, эта ошибка походу говорит что он пытается записать null в колонку которая не может быть null.

Неактивен

 

#4 31.05.2011 19:41:54

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: insert и null

Дело в последовательности обработки событий. NULL в явном виде запроса известен
оптимизатору, поэтому он может применить план «в этом месте выдать новый автоинк-
рементный id». Когда оптимизатор не знает, что получится NULL, он выбирает план
«прибавить к text пятерку, а результат сохранить».

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson