我是否可以在 SQLite 中的 TEXT 列上创建数据库约束,禁止将列的值设置为空字符串“”?< / p>
我想允许列 null ,但不允许空字符串。
答案 0 :(得分:8)
sqlite> create table foo (bar TEXT, CHECK(bar <> ''));
sqlite> insert into foo values (NULL);
sqlite> insert into foo values ('bla');
sqlite> insert into foo values ('');
Error: constraint failed
答案 1 :(得分:2)
您可以使用CHECK约束(http://www.sqlite.org/lang_createtable.html):
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> create table example(col, CHECK (col is null or length(col) > 0));
sqlite> insert into example values ('');
SQL error: constraint failed
sqlite> insert into example values (null);
sqlite> insert into example values ('sample');
sqlite> .nullvalue NULL
sqlite> select col from example;
NULL
sample
答案 2 :(得分:1)
据我所知,在SQLite中不存在类似的约束,但也许您可以使用 INSERT 和/或 UPDATE中的触发器进行解决在NULL中自动更改字符串为空。