|
相同点:都能够确定唯一性
唯一约束冲突
SQL> insert into emp(empid,emp_name,deptno,salary) values(1,'zhangsan',10,0);
已创建 1 行。
SQL> insert into emp(empid,emp_name,deptno,salary) values(2,'zhangsan',20,0);
insert into emp(empid,emp_name,deptno,salary) values(2,'zhangsan',20,0)
*
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.UK_EMP)
主键冲突
SQL> insert into emp(empid,emp_name,deptno,salary) values(1,'zhangsan',10,0);
已创建 1 行。
SQL> insert into emp(empid,emp_name,deptno,salary) values(1,'lisi',20,0);
insert into emp(empid,emp_name,deptno,salary) values(1,'lisi',20,0)
*
ERROR 位于第 1 行:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP)
SQL> rollback;
回退已完成。
不同点:主键约束不允许空,但唯一约束可以为空,
每张表最多只有一个主键,但可以具有多个唯一约束(此处不做验证)
主键为空:
SQL> insert into emp(empid,emp_name,deptno,salary) values('','张三',20,0);
insert into emp(empid,emp_name,deptno,salary) values('','张三',20,0)
*
ERROR 位于第 1 行:
唯一约束为空:
ORA-01400: 无法将 NULL 插入 ("SCOTT"."EMP"."EMPID")
SQL> insert into emp(empid,emp_name,deptno,salary) values(1,'',20,0);
已创建 1 行。
SQL> insert into emp(empid,emp_name,deptno,salary) values(2,'',20,0);
已创建 1 行。
SQL> insert into emp(empid,emp_name,deptno,salary) values(3,'',20,0);
已创建 1 行。 |
|