

sql文を使って、table1からtable2にflagの情報を追加したいときに、  
table1の中の  
flag = '1'の場合、'1'を設定  
flag = '0'の場合、nullを設定  
がしたいですが

[code]

    insert into table2 select pk1,pk2,pk3,(case when flag='1' then '1' else null end) as col1 from table1
    
[/code]

を実行するときに、aはPRIMARY KEYではありませんが、一意制約違反のエラーが出ます。  
どうにもうまくできませんでした。

table1とtable2の構成について

[code]

    CREATE TABLE table1
    pk1                       CHAR(13) NOT NULL,
    pk2                       NUMBER(3,0) NOT NULL,
    pk3                       CHAR(13) NOT NULL,
    flag                      CHAR(1),
    etc．．．
    CONSTRAINT PK_table1 PRIMARY KEY (CUST_NUM, CUST_SEQ, REC_NUM) USING INDEX
    
[/code]

table1とtable2の構成が一緒で、table2に前期のデータと今期（table1）のデータを入れたいです。

初めて質問するので不足しているところが多々あると思いますが、  
どなたがご教授いただければ幸いです。よろしくお願いいたします。


CC BY-SA 4.0
2020-06-25T04:36:37.913
67981
2020-06-25T11:18:22.733
2020-06-25T11:18:22.733
19110
40817
question
sql
INSERT INTO したときに一意制約違反のエラーが出る