【发布时间】:2020-03-05 00:43:48
【问题描述】:
我在XX 架构下有一个名为YY_ZZ_VAT_TRX_DETAILS 的表。
它有一个现有的 SYNONYM 到 AA 架构。
我目前以AA 登录,我想在YY_ZZ_VAT_TRX_DETAILS 添加一列并执行以下命令就好了
alter table XX.YY_ZZ_VAT_TRX_DETAILS
add (USER_DEFINED_FISC_CLASS VARCHAR2(30));
表 XX.YY_ZZ_VAT_TRX_DETAILS 已更改。
我尝试使用下面的简单查询从表中选择列
select USER_DEFINED_FISC_CLASS
from YY_ZZ_VAT_TRX_DETAILS;
但我出人意料地得到了这个错误:
ORA-00904:“USER_DEFINED_FISC_CLASS”:标识符无效 00904. 00000 - “%s:无效标识符” *原因:
*操作:行错误:1 列:9
我以为我只是错过了更改表格,所以我再次重新运行 ALTER 脚本,但得到了这个错误:
从第 4 行开始的错误命令 - 更改表 XX.YY_ZZ_VAT_TRX_DETAILS 添加 (USER_DEFINED_FISC_CLASS VARCHAR2(30)) 错误报告 - ORA-01430: 正在添加的列已存在于表中 01430. 00000 - “正在添加的列已存在于表中” *原因:
*行动:
我检查了对象定义,果然,我在那里找到了新列:
但是当我从Table中查询所有列时,还是看不到:
select *
from YY_ZZ_VAT_TRX_DETAILS;
但是,当我使用 XX 架构前缀进行查询时,我能够看到该列:
select *
from XX.YY_ZZ_VAT_TRX_DETAILS;
为什么同义词没有选择新添加的列?
【问题讨论】:
-
您是否仔细检查过您在同一数据库中使用
alter和select? -
是的,实际上是同一个会话@HoneyBadger
-
@HoneyBadger,我添加了更多信息。似乎当我使用架构查询时,该列出现了。
-
您是否碰巧有一个名为 YY_ZZ_VAT_TRX_DETAILS 的表或视图正在查询?