首页 > 解决方案 > 在对 Oracle 数据库中不同模式中的表执行更新查询时显示无效标识符 SQL 错误

问题描述

在这里,我使用的是 Oracle SQL 开发人员,我需要更新另一个模式中的表。这是我写的更新查询。

update dcs.lte_pin_register set pin = '' 
where dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno 
and dcs.subscriber.sub_number = '?'; 

在上面的查询中,

但是,当我要使用有效的 sub_number 执行上述查询时,我收到以下错误提示。

Error report -
SQL Error: ORA-00904: "DCS"."SUBSCRIBER"."SUB_NUMBER": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

我可以使用 (tableName.columnName) 为更新查询调用同一架构中的列名。但是如何修改上述查询以引用不同模式中的表中的列?

标签: sqloraclesql-updateoracle-sqldeveloperdatabase-schema

解决方案


您必须使用共同相关的子查询来实现这一点 -

UPDATE dcs.lte_pin_register
   SET pin = ''
 WHERE EXISTS (SELECT 1 
                 FROM dcs.subscriber
                WHERE dcs.lte_pin_register.subscriber_seqno = dcs.subscriber.subscriber_seqno
                  AND dcs.subscriber.sub_number = '?');

推荐阅读