我有一个表,想创建3列唯一索引。问题是列之一可以具有空值。您可能知道sqlite以特殊方式处理这些值,如果我们有
row1: A, B, null
row2: A, B, null
它将被接受(即使我在A,B,C上创建了唯一索引)。
问题是,是否有任何技巧可以将null视为与所有其他值相同的值(例如null为零),并且在上面的情况下,第二行不会被接受为违反规则。
事先得到帮助。
答案 0 :(得分:1)
您可以尝试创建具有默认值(例如,零)的列-3的表,不允许NULL,因此当它不包含在INSERT中时,它将采用默认值。这将保留唯一索引。
答案 1 :(得分:0)
太晚了,但必须为自己找到解决方案。
CREATE UNIQUE INDEX my_index ON my_table(field_a,field_b,field_c)WHERE field_c IS NOT NULL;