Вопрос по SQLite - объявление стобцов

Модератор: Модераторы

Вопрос по SQLite - объявление стобцов

Сообщение alexs » 10.10.2016 00:09:20

В свете доработки FBManager-а
Вопрос знатокам сего чуда
Что значит объявление столбца "attribute"
CREATE TABLE "GENERAL_INFO" ("attribute" TEXT NOT NULL NULL ,"value" TEXT NULL );
Я вижу безсмыслицу - для колонки с условием NOT NULL дано значение по умолчанию NULL
Или как это ещё трактовать можно?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Вопрос по SQLite - объявление стобцов

Сообщение Снег Север » 10.10.2016 08:39:28

Это означает, что insert\update не может вставить в поле значение NULL, но никакого дефолтного значения у поля нет.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Вопрос по SQLite - объявление стобцов

Сообщение alexs » 10.10.2016 09:02:58

Меня смущает вот это - NOT NULL NULL
Я не нашёл второго NULL-а в официальной документации
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Вопрос по SQLite - объявление стобцов

Сообщение Снег Север » 10.10.2016 11:24:01

alexs писал(а):Меня смущает вот это - NOT NULL NULL
Я не нашёл второго NULL-а в официальной документации
NOT NULL - запрещено присваивать полю NULL, второй NULL - нет дефолтного значения. Такой синтаксис...
Если бы присвоение NULL было разрешено, было бы как для второго поля. Тут еще надо помнить нюанс - если поле описано как TEXT, оно не обязательно содержит текст, там, вообще говоря, могут быть и числа, и даты...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Вопрос по SQLite - объявление стобцов

Сообщение Vadim » 10.10.2016 12:10:38

Снег Север писал(а):если поле описано как TEXT, оно не обязательно содержит текст, там, вообще говоря, могут быть и числа, и даты...

У них там, по большому счёту, вообще всё текст... :-)

Добавлено спустя 18 минут 32 секунды:
alexs
В общем, SQLite на такую конструкцию ругаться не будет (он и вообще некоторые проказы прощает, например выход размера сроки за пределы размеров строкового поля ;-) ), Однако работать при эксплуатации будет правильно - если вводить только значение value - тут же обругает.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Вопрос по SQLite - объявление стобцов

Сообщение alexs » 10.10.2016 13:01:37

Насчёт проверки - да. Есть она. Специально моделировал.
Но вот для парсера - проблема. Как верно это разбирать?
Снег Север писал(а):второй NULL - нет дефолтного значения

Т.е. это недокументированная особенность, которая фактически противоположна выражению default?
Если так - то спасибо. Буду иметь введу. Сейчас я этот NULL пишу в DEFAULT.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Вопрос по SQLite - объявление стобцов

Сообщение Снег Север » 10.10.2016 14:54:49

alexs писал(а):Т.е. это недокументированная особенность, которая фактически противоположна выражению default?
В общем - да, т.е. написать в CREATE TABLE
aaa TEXT NOT NULL
(без DEFAULT) и
aaa TEXT NOT NULL NULL
даст одинаковый результат
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Вопрос по SQLite - объявление стобцов

Сообщение alexs » 10.10.2016 16:11:26

Большое спасибо!
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru