LINUX.ORG.RU

MySQL не пустой столбец


0

0

Здравствуйте. Что надо сделать со столбцом, чтобы при добавлении новой записи, нельзя было не указать его? Ну т.е. имеем к примеру 3 столбца: s1, s2, s3. s2 - обязательный столбец и не может быть пустым. Если делаем запрос вида: insert into table (s1,s3) values (1,3); - то ошибка.

Я понимаю, что это можно отследить на уровне приложения, но хочется, но уровне СУБД, чтобы если попытка такого добавления будет в транзакции - она не прошла.

★★★★★

Ответ на: Re: MySQL не пустой столбец от Anoxemian

Re: MySQL не пустой столбец

Нет

Величина DEFAULT должна быть константой, она не может быть функцией или выражением. Если для данного столбца не задается никакой величины DEFAULT, то MySQL автоматически назначает ее. Если столбец может принимать NULL как допустимую величину, то по умолчанию присваивается значение NULL. Если столбец объявлен как NOT NULL, то значение по умолчанию зависит от типа столбца:

roy ★★★★★
() автор топика
Ответ на: Re: MySQL не пустой столбец от Anoxemian

Re: MySQL не пустой столбец

Вот пример:

mysql> CREATE TABLE `test`
    -> (
    ->         `id` INTEGER  NOT NULL AUTO_INCREMENT,
    ->         `login` VARCHAR(255)  NOT NULL,
    ->         `password` VARCHAR(255)  NOT NULL,
    ->         PRIMARY KEY (`id`) 
    -> )Type=InnoDB;
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> insert into test (login) values ('la');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from test;
+----+-------+----------+
| id | login | password |
+----+-------+----------+
|  1 | la    |          | 
+----+-------+----------+
1 row in set (0.00 sec)

mysql> 


Более того, даже созданеи индексов по полю дает возможность вставить
одну запись с пустым значением этого поля

roy ★★★★★
() автор топика
Ответ на: Re: MySQL не пустой столбец от Anoxemian

Re: MySQL не пустой столбец

Ошибкой.

mysql> CREATE TABLE `test`
    -> (
    ->         `id` INTEGER  NOT NULL AUTO_INCREMENT,
    ->         `login` VARCHAR(255)  NOT NULL,
    ->         `password` VARCHAR(255)  NOT NULL DEFAULT NULL,
    ->         PRIMARY KEY (`id`),
    ->         UNIQUE KEY `user_password` (`password`)
    -> )Type=InnoDB;
ERROR 1067 (42000): Invalid default value for 'password'

roy ★★★★★
() автор топика
Ответ на: Re: MySQL не пустой столбец от Deleted

Re: MySQL не пустой столбец

Да не, это "опечатка". Это я просто уже игрался с разными опциями, конечно без DEFAULT NULL.

roy ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.