【发布时间】:2023-03-09 22:05:02
【问题描述】:
好的,我有 2 个新表:Client 和 Contract。我将专注于第一个,因为它们具有相同的结构。客户端看起来像:
+-----------+---------+
| client_id | name |
+-----------+---------+
| Value 1 | Value 2 |
+-----------+---------+
并像这样创建:
CREATE TABLE Client (
client_id varchar2(15) NOT NULL,
name varchar2(100) NOT NULL,
CONSTRAINT Client_pk PRIMARY KEY (client_id)
) ;
我还有一张旧表:old_contracts 看起来像:
+------------+----------+------+
| contractid | clientid | name |
+------------+----------+------+
| con1 | cli1 | n1 |
| con2 | cli2 | n2 |
| con3 | cli2 | n2 |
| con4 | cli3 | n3 |
| con5 | cli3 | n3 |
+------------+----------+------+
定义:
CREATE TABLE old_contracts(
contractid varchar2(15) NOT NULL
clientid varchar2(15) NOT NULL,
name varchar2(100) NOT NULL
) ;
我想从 old_contract 中获取数据并将其插入到客户端中。
这个 old_contracts 表有重复的 clientid 行(一个客户可以有多个合同),但我不想在 Client 表上有重复,所以我这样做:
INSERT INTO Client (
client_id,
name
) SELECT DISTINCT
clientid,
name
FROM old_contracts;
不重复。无论如何,我收到了这个错误:
错误 SQL:ORA-00001:违反唯一约束 (USER.CLIENT_PK)
00001.00000 - “违反了唯一约束 (%s.%s)”
发生了什么事?我相信 DISTINCT 关键字会起作用。
我也尝试按照相关帖子中的建议添加 WHERE NOT EXISTS 子句(即this one),但我得到的结果是相同的错误。
【问题讨论】:
标签: database oracle oracle11g insert duplicates