sql - 唯一约束列可以具有2个或多个空值吗? (甲骨文)

标签 sql oracle11g

唯一约束列中是否可以有2个或多个空值?

最佳答案

易于检查:(答案为是)

create table t1 (col1 number unique);

Table T1 created.

insert into t1 values (1);

1 row inserted.

insert into t1 values (null);

1 row inserted.

insert into t1 values (null);

1 row inserted.

select rownum, col1 from t1;

    ROWNUM       COL1
---------- ----------
         1          1
         2           
         3           

3 rows selected.


编辑:尽管上面显示的是唯一约束中涉及一列的答案,但也可以具有复合唯一键(在表级别而不是列级别定义的约束-涉及两个或多个列)。在那种情况下,如果说唯一键打开(col1,col2,col3),则(1、1、0)和(1、1、3)不会重复,因为它们在每个位置都不相同。在这种情况下,允许(1,1,null),但仅允许一次。但是,一列中“值”为空的正确“一般化”是使“三三个”列中的所有值都为空。在这方面,唯一键列中具有“空值”的行仍允许任意次数。

也就是说:虽然允许(1,1,null),但不超过一次,但组成唯一键的三列中具有值(null,null,null)的行被允许任意次数-就像在单列情况下。

关于sql - 唯一约束列可以具有2个或多个空值吗? (甲骨文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027068/

相关文章:

sql - 插入、更新和删除后的版本查询输出

php - magento sql 脚本不工作?

Mysql如何通过另一个id选择最大id组,其中boolean为false

c# - 将字符串与充满正则表达式的列进行匹配

c# - 减少 Oracle 中的解析调用

php - 1 个 ID 可获取更多项目

mysql - SQL查询,不包括前5条记录

sql - 仅选择 Postgres JSONB 字段中的非 NULL 键

database - 使用 Oracle 配置 Liferay 7.0 和 WIldfly

sql - 查询添加相同列条目 W.R.T 其外键