SQL中的Update语句
我正在编写一个更新触发器,正在努力处理Update语句: 声明如下:SQL中的Update语句,sql,oracle,sql-update,Sql,Oracle,Sql Update,我正在编写一个更新触发器,正在努力处理Update语句: 声明如下: UPDATE ARGUS_APP.CMN_REG_REPORTS CARR SET CARR.DATE_SUBMITTED = ( SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate FROM esm_owner.MESSAGES M WHERE M.ACKNOWLEDGMENTHEADER.MES
UPDATE ARGUS_APP.CMN_REG_REPORTS CARR
SET CARR.DATE_SUBMITTED =
(
SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate
FROM esm_owner.MESSAGES M
WHERE M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'
)
WHERE CARR.DATE_SUBMITTED =
(
SELECT CARR.DATE_SUBMITTED
FROM esm_owner.safetyreport sr,esm_owner.MESSAGES M,ARGUS_APP.CMN_REG_REPORTS CARR
WHERE sr.report_id=CARR.esm_report_id
AND M.msg_id = sr.msg_id
AND M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'
)
每次我都会得到ORA:01427
表格结构如下:
UPDATE ARGUS_APP.CMN_REG_REPORTS CARR
SET CARR.DATE_SUBMITTED =
(
SELECT To_Date(M.ACKNOWLEDGMENTHEADER.MESSAGEDATE,'YYYYMMDDHH24MISS') Messagedate
FROM esm_owner.MESSAGES M
WHERE M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'
)
WHERE CARR.DATE_SUBMITTED =
(
SELECT CARR.DATE_SUBMITTED
FROM esm_owner.safetyreport sr,esm_owner.MESSAGES M,ARGUS_APP.CMN_REG_REPORTS CARR
WHERE sr.report_id=CARR.esm_report_id
AND M.msg_id = sr.msg_id
AND M.ACKNOWLEDGMENTHEADER.MESSAGESENDERIDENTIFIER='PMDA'
)
我有三张桌子
请帮我解决这个问题。我要大刀阔斧地试一下,猜猜这就是你想要的。它们的关键特性是将子选择与更新关联起来(子选择中的
carr
参考外部语句中的表)
下面是一个显示基本原理的示例:
看起来您的一个子查询可能返回了多行数据。您可以通过单独运行每一个来检查这一点 如果要将更新应用于所有对象,请更改
... = (SELECT...
到
您的一个子查询返回了多行,这是导致错误的原因。您的问题不清楚您希望如何解决此问题。
Messages
在MESSAGESENDERIDENTIFIER
上不是唯一的,或者您的其他子查询有问题。。。如果没有更多的信息,我看不出我们能提供什么帮助,而且我们的帮助速度肯定比你自己解决的快。……两个子查询都返回9行,正如我所期望的那样,因为我使用了过滤条件“PMDA”,所以我希望更新将一对一映射并更新日期值。@lAURENCE我设置了一个测试用例。。我该怎么做与你分享吗?我确实在创建过程中忽略了PMDA这一点。我怎么能在URL上看到它?是顶部的View Sample Fiddle按钮吗?但是我在那里什么也看不见
... IN (SELECT ...