具有条件的唯一约束,以接受唯一列上的多个空值

时间:2016-05-13 19:17:44

标签: sql sql-server sql-server-2008 null unique

我想知道具有唯一条件约束的正确方法是什么? 因此,如果用户在AccountIdentifier字段中没有输入任何内容并提交,它将在数据库中显示为Null,但是由于唯一约束,它不能有多个空值,有没有办法做到这一点?

function username_is_available(username, callback) {
    get_data("username", username, callback);
}

function get_data(data_type, data, fn) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            fn(xmlhttp.responseText == "true");
        }
    };
    xmlhttp.open("GET", "availability.php?" + data_type + "=" + data, true);
    xmlhttp.send();
}

// Usage:
username_is_available("Ivan", function(available) {
    var text = available ? "Available" : "Taken";
    document.getElementById("username_err").innerHTML = text;
});

2 个答案:

答案 0 :(得分:2)

将您的索引创建为已过滤。如果从索引中省略空值,则不会强制执行唯一性。

答案 1 :(得分:1)

NULL不是价值,而是缺乏价值。您可以在唯一列中拥有任意数量的NULL个{{1}}个。例如,请查看此sqlfiddle example与您的表格。