我在表格上有一个插入语句" test"。表格中第x列的PK" test"。
现在,当插入重复行时,同一行应该更新而不是插入。
我怎样才能做到这一点。
可以dup_val_on_index
吗?
请帮忙。
答案 0 :(得分:0)
首先创建上表中没有任何KEY
列的副本,然后按
步骤1:每当遇到一堆insert语句时,truncate
表首先出现
第2步:INSERT
上面的截断表
第3步:执行MERGE
语句,如下所示
MERGE INTO TABLE_MAIN M
USING TABLE_MAIN_COPY C
ON (m.id = c.id)
WHEN MATCHED THEN UPDATE SET M.somecol = c.somecol
WHEN NOT MATCHED THEN INSERT (m.id, m.somecol)
VALUES (c.id, c.somecol);
如果在更新时有两行或更多行,则在合并ORA-30926: unable to get a stable set of rows in the source tables
时可能会出错。
您可以使用与ID相关的GROUP
函数或类似ORA-30926: unable to get a stable set of rows in the source tables