Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle表约束与唯一索引? Oracle中主键和唯一键的区别是什么 如果我为列a设置了唯一索引,那么我仍然可以设置 列A或其他列的约束唯一键或主键_Oracle_Database Design_Constraints - Fatal编程技术网

Oracle表约束与唯一索引? Oracle中主键和唯一键的区别是什么 如果我为列a设置了唯一索引,那么我仍然可以设置 列A或其他列的约束唯一键或主键

Oracle表约束与唯一索引? Oracle中主键和唯一键的区别是什么 如果我为列a设置了唯一索引,那么我仍然可以设置 列A或其他列的约束唯一键或主键,oracle,database-design,constraints,Oracle,Database Design,Constraints,主键和唯一键之间的技术区别在于,主键中的所有列都是必需的,而唯一键中可以有null 就用法而言,主键不应更改,而唯一键可以更改。在物理实现中,这意味着表的主键通常是合成的(使用序列或类似机制生成),而其业务键(例如客户名称)是使用唯一约束强制执行的 外键约束应引用主键而不是唯一键 一个表只能有一个主键,但可以有任意数量的唯一键。对于任何给定的列排列,我们只能有一个索引。因此,如果我们在T23(COL_1)上有一个主键,那么我们也不能在T23(COL_1)上构建一个唯一的键,为什么我们要这样做?但

主键和唯一键之间的技术区别在于,主键中的所有列都是必需的,而唯一键中可以有null

就用法而言,主键不应更改,而唯一键可以更改。在物理实现中,这意味着表的主键通常是合成的(使用序列或类似机制生成),而其业务键(例如客户名称)是使用唯一约束强制执行的

外键约束应引用主键而不是唯一键

一个表只能有一个主键,但可以有任意数量的唯一键。对于任何给定的列排列,我们只能有一个索引。因此,如果我们在T23(COL_1)上有一个主键,那么我们也不能在T23(COL_1)上构建一个唯一的键,为什么我们要这样做?但是,我们可以在T23上构建一个唯一的键(COL_1,COL_2)

关于索引,我们可以在表列上创建唯一索引,然后在添加唯一或主键约束时使用该索引。(事实上,如果实际值没有任何重复项,我们可以使用普通索引强制执行主键约束。)