如何在sqlite中任何一个可以为null时在多列上设置唯一约束

Anj*_*hal 3 sqlite

当sqlite中任何一个可以为null时,如何为多列设置唯一约束?

例如我做了unique(“ col1”,“ col2”,“ col3”)并尝试insert into tablename values("abc","def",null)两次将两行都插入。当第三列为空时,唯一约束不起作用。

luc*_*mia 5

在sqlite中,所有null都是差异。我认为解决此问题的最佳方法是使用特殊的默认值将c列设置为非null。然后使用默认值(例如0,'')表示空值。

编辑1

您可以轻松地将此解决方案扩展到任何列

create table test (
    a text not null default "",
    b text not null default "",
    c text not null default ""
);
Run Code Online (Sandbox Code Playgroud)