Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle使用复合键插入表_Sql_Oracle_Insert_Oracle12c - Fatal编程技术网

Sql Oracle使用复合键插入表

Sql Oracle使用复合键插入表,sql,oracle,insert,oracle12c,Sql,Oracle,Insert,Oracle12c,我有一个表TBL_1,包含以下字段: TBL_ID NUMBER (pk), CREATE_DATE DATE (pk), TBL_IND VARCHAR2(1) 主键位于TBL_ID和CREATE_DATE上,我试图执行insert语句,但收到错误ORA-00001:违反了唯一约束主键 有一个插入前触发器将NEW.CREATE_DATE设置为SYSDATE。insert语句如下所示: INSERT INTO TBL_1 (tbl_id,tbl_ind) SELECT tbl_id,'

我有一个表TBL_1,包含以下字段:

TBL_ID NUMBER (pk),
CREATE_DATE DATE (pk),
TBL_IND VARCHAR2(1)
主键位于TBL_ID和CREATE_DATE上,我试图执行insert语句,但收到错误ORA-00001:违反了唯一约束主键

有一个插入前触发器将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,触发器是否可能对两行使用相同的确切日期,从而导致重复错误?如何避免这种情况?

我认为将create\u date作为主键的一部分不是一个好主意。我建议您改用序列值

如果不介意减少行数,可以执行以下操作:

INSERT INTO TBL_1 (tbl_id,tbl_ind)
    SELECT DISTINCT tbl_id, 'Y' 
    FROM tbl_info;
或者,如果仍然希望插入所有行,则重新构造数据以使用序列而不是创建日期