在SQL Oracle中,我想在列B中的值(来自表T1)中插入(来自表T2)
我收到了以下要求:
INSERT INTO schema.T1(A)
SELECT B FROM schema.T2;
我遇到以下错误:
ORA-00904“B”无效的标识符
当我检查表T2中的内容时:
SELECT * FROM schema.T2
我可以清楚地看到有一个带有值的B列......
我已经检查过:
数据类型相同
数据可以为空
没有约束例外
所以当我启动它时,例如:
SELECT * FROM schema.t2 WHERE column1=1
甚至
SELECT column1 FROM schema.t2
它有效,但当我这样做时:
SELECT B FROM schema.t2
或
SELECT * FROM schema.t2 WHERE B = ...
它不起作用,除了第一个列之外,表T2中的所有列都是相同的。
感谢您抽出时间提供帮助
如果在那些需要双引号的列上添加触发器,它将无效(它对我不起作用)。无法识别该列,触发器将丢弃错误。我将进一步研究解决这个问题。
答案 0 :(得分:4)
我找到了解决办法......这很简单,但我不知道这个伎俩。
如果出现此类错误,可以通过在列名称上添加双引号来解决。列名称只能是字母数字字符和特殊字符$,_。
如果它包含其他字符,则必须用双引号括起来。
所以它看起来像这样:
INSERT INTO schema.T1(A)
SELECT "B" FROM schema.T2;
然后它完美无缺!
感谢您的帮助! : - )
答案 1 :(得分:-1)
B.您将需要创建它或找出实际上与您期望的B对应的列。