【发布时间】:2017-06-07 20:40:05
【问题描述】:
SELECT * FROM DIM_TRANS_TYPE WHERE TRANSACTION_TYPE='ILAU';
我在这里要做的就是将上述记录中的ILAU 更改为IFAU 和Instant Loan Authorization Request 更改为Instant Finance Authorization Request。
表架构:
Name Null Type
--------------------- -------- ------------------
TRANSACTION_TYPE NOT NULL VARCHAR2(4 CHAR) --> PRIMARY KEY
TRANSACTION_TYPE_DESC VARCHAR2(256 CHAR)
工作!!!
MERGE INTO DIM_TRANS_TYPE a
USING (SELECT 'ILAU' TRANSACTION_TYPE, 'Instant Loan Authorization Request' TRANSACTION_TYPE_DESC FROM DUAL) b
ON (a.TRANSACTION_TYPE = b.TRANSACTION_TYPE)
WHEN MATCHED THEN UPDATE
SET
a.TRANSACTION_TYPE_DESC = 'Instant Finance Authorization Request'
WHEN NOT MATCHED THEN
INSERT(a.TRANSACTION_TYPE, a.TRANSACTION_TYPE_DESC)
VALUES(b.TRANSACTION_TYPE, b.TRANSACTION_TYPE_DESC);
不工作!!! (错误如下)
MERGE INTO DIM_TRANS_TYPE a
USING (SELECT 'ILAU' TRANSACTION_TYPE, 'Instant Loan Authorization Request' TRANSACTION_TYPE_DESC FROM DUAL) b
ON (a.TRANSACTION_TYPE = b.TRANSACTION_TYPE)
WHEN MATCHED THEN UPDATE
SET
a.TRANSACTION_TYPE = 'IFAU',
a.TRANSACTION_TYPE_DESC = 'Instant Finance Authorization Request'
WHEN NOT MATCHED THEN
INSERT(a.TRANSACTION_TYPE, a.TRANSACTION_TYPE_DESC)
VALUES(b.TRANSACTION_TYPE, b.TRANSACTION_TYPE_DESC);
错误:
Error at Command Line : 5 Column : 9
Error report -
SQL Error: ORA-38104: Columns referenced in the ON Clause cannot be updated: "A"."TRANSACTION_TYPE"
38104. 00000 - "Columns referenced in the ON Clause cannot be updated: %s"
*Cause: LHS of UPDATE SET contains the columns referenced in the ON Clause
*Action:
【问题讨论】:
-
能否请您发布 DIM_TRANS_TYPE 的架构
-
刚刚用表架构更新了上面的帖子
-
错误信息很清楚,不能更新
on中引用的列是merge的限制之一。检查文档docs.oracle.com/cd/B28359_01/server.111/b28286/… -
这个错误看起来很简单,你不能更新 ON 子句 (a.TRANSACTION_TYPE) 中的列匹配。您可以插入一个新表然后更新您的原始表,使它们不是同一列吗?