我有一张表TBL_1
,其中包含以下字段:
TBL_ID NUMBER (pk),
CREATE_DATE DATE (pk),
TBL_IND VARCHAR2(1)
主键位于TBL_ID
和CREATE_DATE
,我正在尝试执行插入语句,但收到错误ORA-00001: unique constraint (primary key) violated
。
有一个插入触发器,将NEW.CREATE_DATE
设置为SYSDATE
。 insert语句如下所示:
INSERT INTO TBL_1 (tbl_id,tbl_ind)
SELECT tbl_id,'Y'
FROM tbl_info;
实际查询稍微复杂一些,但我只想指出它是INSERT INTO SELECT
语句。是否有可能重复tbl_id
触发器对两行使用相同的确切日期,从而导致重复错误?我怎么能避免这个?
答案 0 :(得分:1)
我认为将create_date
作为主键的一部分并不是一个好主意。我建议您使用序列值。
如果您不介意减少行数,可以执行以下操作:
INSERT INTO TBL_1 (tbl_id,tbl_ind)
SELECT DISTINCT tbl_id, 'Y'
FROM tbl_info;
或者,如果您仍希望插入所有行,则重新构建数据以使用序列而不是创建日期。