使用Composite主键在表中插入数据时出错

时间:2017-09-26 05:33:54

标签: sql oracle sql-insert

我有桌子

create table INVOICE
(
  brok_dlr_code     VARCHAR2(20),
  invoice_date      DATE,
  ba_trxn_date_from DATE,
  ba_trxn_date_to   DATE,
  mf_invoice_no     VARCHAR2(40)
);

我创建了复合主键

ALTER TABLE BROKER_INVOICE_HISTORY
   ADD CONSTRAINT PK_BROKER_INVOICE_HISTORY 
   PRIMARY KEY(brok_dlr_code, ba_trxn_date_from, ba_trxn_date_to);

没有相同的brok_dlr_code的记录,但执行的脚本具有相同的ba_trxn_date和ba_trxn_date_to日期,但会引发错误

ORA-20005: ORA-00001: unique constraint violated

1 个答案:

答案 0 :(得分:0)

由于已经插入的记录很少,因此再次运行脚本会导致脚本开始插入相同的数据。这导致了唯一的约束违规。因此旧数据必须被截断并重新运行脚本不会导致这种唯一约束。