在这种情况下,完整性约束会在整个SQL 语句得到处理之后立即检查。如果一
个PL/SQL 存储过程中有多条SQL 语句,那么在每条SQL 语句执行之后都会立即验证其完整性约束,而不是在这个存储过程完成后才检查它。
测试:
SQL> create table s3(x int unique);
Table created.
SQL> insert into s3 values (1);
1 row created.
SQL> insert into s3 values (2);
1 row created.
SQL> update s3 set x=x+1;
2 rows updated.
SQL> /
2 rows updated.
SQL> /
2 rows updated.
SQL> select * from s3;
X
----------
4
5
SQL>
因为这里语句并没有报错,理论上它是应该报错的,因为会有重复值出现,这就证明ORACLE是在SQL语句执行后进行约束检查,而不是执行的过程中,如果是执行过程中检查的话,这里应该出错才对。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-731250/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15720542/viewspace-731250/