sql - Oracle - 忽略约束失败

标签 sql oracle

我有一个包含很多行的“员工”表,我想从此表中删除未使用的行(所有其他表从未引用过的员工。)

存在一些限制,如果在别处引用这些行,则无法从人员表中删除这些行。因此,我希望我可以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/

相关文章:

mysql - 将 plsql 函数的值复制到新表中

sql - 从两个表中选择一列并将它们放入一个

java - 如何在运行时以编程方式更改默认服务器 Play + Ebean

oracle - 使用 Oracle 进行单元测试

oracle - Oracle触发器的HIbernate问题,用于从序列中生成ID

php - SELECT 列中的最后一个值始终为 null 或 false SQL

mysql - 表的规范化

mysql - 具有计算的动态最小最大值的 SQL 查询

sql - 具有填充模式的Oracle to_char格式编号(FM0000)

PHP/MySQL : Footer displayed before table (powered by a database)