DELETE from dbo.T_LIAV_AGENT_STATE_APPROVAL SAP
WHERE EXISTS (SELECT UNIQUE 1 FROM MCS_SYNC_STATE_APPR APP
inner join MCS_SYNC_NAME SN on SN.SE_NAME_ID = APP.SE_NAME_ID
and SN.ACTION in('U','S')
Where APP.SE_name_id = SAP.AV_NAME_ID
and APP.SYNC_INSTANCE_ID = param_inst_ID);
COMMIT;
INSERT INTO dbo.T_LIAV_AGENT_STATE_APPROVAL
SELECT UNIQUE
APP.SE_NAME_ID AS AV_NAME_ID,
APP.STATE AS AV_STATE,
APP.APPROVAL_TYPE AS AV_APPROVAL_TYPE,
APP.START_DATE AS AV_START_DATE,
APP.END_DATE AS AV_END_DATE,
APP.APPOINTED AS AV_APPOINTED,
APP.RENEWAL_DATE AS AV_RENEWAL_DATE,
APP.LICENSE AS AV_LICENSE,
COMPANY_NAME_ID as AV_COMPANY_CODE,
SYSDATE AS TSTAMP,
SYNC_USER_NAME_ID AS AV_FIRST_USER_ID,
SYSDATE AS AV_FIRST_DATE,
NULL AS AV_LAST_USER_ID,
NULL AS AV_LAST_DATE
FROM MCS_SYNC_STATE_APPR APP
WHERE exists (select 1 from t_liag_agent AG
where AG.ag_name_id = APP.SE_NAME_ID)
and APP.SYNC_INSTANCE_ID = param_inst_ID;
以下是SQL部分,我在调试代码时出错:
ORA-00001:唯一约束主键违反T_LIAV_AGENT_STATE_APPROVAL...
这是主键约束依赖的2列AV_NAME_ID,AV_STATE...
我没有重复的数据...你认为还有其他原因吗?
如果不确定违反了哪个唯一约束,可以运行以下SQL:
Select Distinct table_name
From all_indexes
Where index_name = 'CONSTRAINT_NAME';
与Insert table语句相比,Select语句缺少一列,因此出现此错误。当我将该列添加到select语句时,它工作得非常好。
如果您有“创建表”权限,请使用dbms\u errlog包。
>
begin
dbms_errlog.create_error_log('DBO.T_LIAV_AGENT_STATE_APPROVAL');
end;
/
使用附加子句运行您的INSERT脚本:
INSERT INTO dbo.T_LIAV_AGENT_STATE_APPROVAL
SELECT ...
FROM ...
LOG ERRORS INTO err$_T_LIAV_AGENT_STATE_APPROVAL REJECT LIMIT UNLIMITED;
检查错误记录表中的错误:
select * from err$_T_LIAV_AGENT_STATE_APPROVAL;
您将看到所有违反约束的记录和错误消息。
我正试图插入数据库,但我在日志上看到了这样的消息: 我找到了这个查询以获取违反的密钥:
我有两张表, 但我做了一个组声明,以确保from\t的名称是唯一的: 我不确定我是否正确理解了这个问题。我尽了我所能,但仍然没有运气。
问题内容: 我正在使用Oracle数据库。我们的服务呼叫频繁失败。当我查看日志时,在表上看到以下异常 java.sql.BatchUpdateException:ORA-00001:违反了唯一约束(DBSCHEMA.IDX_CO_DETAILS)。 我已经检查了表上索引的索引名称DBSCHEMA.IDX_CO_DETAILS。 它不包含任何列的(INCLUDE_COLUMN为null)。我怎么知道
问题内容: 目标: 交换两个记录的主键,而不会遇到ORA-00001:违反了唯一约束。“可行”的解决方案(在下文中)只是一个破解。是否有一项功能/技术可以将约束执行推迟到提交事务之前? motivation -使用此数据的遗留应用程序存在设计缺陷,并且依赖于ID顺序和值-请求是按以下方式交换PK值: What doesn’t Work: Hack/Solution that ‘works’ Tab
我有一个迁移脚本之间的2个不同的模式数据库。脚本做了3件事:1。禁用约束2。将记录从旧架构插入到新架构3。启用约束 我发现这两个约束在旧的模式中是不存在的。这2个表的表结构定义有什么问题吗?