Значение по умолчанию SQLite, если ноль - PullRequest
2 голосов
/ 12 декабря 2011

Допустим, у меня есть таблица с именем "table"

Итак

Create Table "Table" (a int not null, b int default value 1)

Если я сделаю "INSERT INTO "Table" (a) values (1)".Я вернусь 1 для столбца a и 1 для столбца b, поскольку значение по умолчанию для столбца b равно 1.

НО, если я сделаю "INSERT INTO "Table" (a, b) values (1, null)".Я верну 1 для столбца a и пустое значение для столбца b.Есть ли способ установить значение по умолчанию для столбца, если задан ноль?

Ответы [ 3 ]

1 голос
/ 12 декабря 2011

Если вы не хотите иметь значения NULL для столбца b, то вы должны установить его как поле, не имеющее нулевого значения, как вы сделали с a

1 голос
/ 12 декабря 2011

Нет, если вы делаете:

INSERT INTO my_table (a, b) values (1, null) 

Вы явно запрашиваете значение null в столбце b.

В СУБД вы могли бы технически использовать триггер для переопределения этого поведения.Но в SQLite вы не можете.

0 голосов
/ 22 июля 2013

Это решение для MySQL должно в основном работать для SQLite. Основное и хотя и главное отличие состоит в том, что в SQLite, похоже, нет функции Default(), как в MySQL. Мне удалось воспроизвести эту функцию, отслеживая мою схему базы данных в PHP, а затем вручную вставив значение по умолчанию в качестве второго аргумента Coalesce(). См. Этот Гист , например, код.

...