Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
У меня вопрос:
я создаю таблицу
create table data_table ( `id` int not null, `numbers` enum('first','second') default 'first', primary key ( `id`));
для поля numbers я устанавливаю значение по умолчанию и по идее, если я сделаю так
insert into data_table values (1);
то в поле numbers должно принять значение по умолчанию, но так не происходит (mysql ругается что количество полей не соответствует количеству вводимых данных) и после этого мне становится совсем не понятно зачем нужно значение по умолчанию.
Объясните, пожалуйста, новичку
Неактивен
Представьте себе вот такую табличку:
CREATE TABLE z (a INT NOT NULL DEFAULT 0, b INT NOT NULL DEFAULT 1);
Как он должен реагировать на INSERT INTO z VALUES (1)?
Именно поэтому, такой синтаксис запрещен, и нужно писать полностью.
В Вашем случае — INSERT INTO data_table VALUES (1, NULL);
Неактивен
если я так пишу он вот что выдает
mysql> insert into data_table values (1, NULL);
Query OK, 1 rows affected (0.00 sec)
mysql> select * from data_table
-> ;
+----+--------+
| id | numbers |
+----+--------+
| 1 | NULL |
+----+--------+
1 rows in set (0.01 sec)
почему в строке NULL, если должен быть first?
Отредактированно factorng (24.08.2009 23:18:48)
Неактивен
Хм, раньше, вроде, NULL обрабатывался в дефолтное значение... сейчас, кажется,
поведение более правильное на колонке, допускающей NULL.
Тогда попробуйте явно задать INSERT INTO data_table VALUES (1,DEFAULT);
Неактивен
Спасибо огромное, так действительно заработало!
Неактивен