我有一个包含很多行的“员工”表,我想从此表中删除未使用的行(所有其他表从未引用过的员工。)
存在一些限制,如果在别处引用这些行,则无法从人员表中删除这些行。因此,我希望我可以DELETE FROM STAFF
,这将删除未引用的行并保留其他行。
不幸的是,Oracle 认为这是一个错误,所以一旦它遇到一个被外部引用的行,整个查询就会失败并违反约束。
有什么方法可以告诉 Oracle 忽略约束违规,保持记录不变并继续下一个记录?
最佳答案
您可以使用 DML 错误记录:
exec dbms_errlog.create_error_log(dml_table_name => 'STAFF'
,err_log_table_name => 'STAFF_ERRORS');
delete from STAFF
log errors into STAFF_ERRORS('Is referenced') reject limit 999999999;
然后可选择删除、截断或删除表 STAFF_ERRORS。
关于sql - Oracle - 忽略约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425903/