【问题标题】:Insert into Select (Invalid identifier Error)插入选择(无效标识符错误)
【发布时间】:2015-11-10 09:49:19
【问题描述】:

我有一个名为 Andamio(命运表)的表,其中包含以下列:

CODTIPOLOCALIZACION
TXTNOMBRE
CODLOCALIZACION
CODCENTRO
CODPUBLICO
TXTDESCRIPCION

还有一个叫做 Centro(原始的),有这些列:

CODCENTRO
CODPARKING
TXTPARKING

我想在前两列中用相同的值填充所有行:

CODTIPOLOCALIZACION = 2    for all
TXTNOMBRE = "Park"         for all

第三列来自自动序列:'MySeq_seq'

CODLOCALIZACION = MySeq_seq.NEXTVAL

最后三列必须与原始表“Centro”相同,但条件是命运表“Andamio”中没有其他行具有相同的 CODCENTRO 和 CODPUBLICO 值等于 CODCENTRO 和 CODPARKING .

INSERT INTO ANDAMIO
        (CODTIPOLOCALIZACION, TXTNOMBRE, CODLOCALIZACION, CODCENTRO, CODPUBLICO, 
         TXT_DESCRIPCION)
SELECT '2', 'Park', MySeq_seq.NEXTVAL, Datos.CODCENTRO, Datos.CODPARKING, Datos.TXTPARKING
    FROM (SELECT CODCENTRO, CODPARKING, TXTPARKING FROM CENTRO centrop
    WHERE (centrop.CODCENTRO <> ANDAMIO.CODCENTRO
       AND centrop.CODPARKING <> ANDAMIO.CODPUBLICO)) Datos

我已经尝试了这些 INSERT INTO 序列有很多变体 [使用 INSERT INTO 表 VALUES ('2', 'Park', SELECT(...))] 和许多其他... 我总是得到 Invalid Identifier,因为 Oracle 声称表 Andamio 中没有名为 CODPUBLICO 的列,但它确实存在。

任何帮助将不胜感激。 谢谢!

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您收到该错误是因为您在插入语句的 select 部分中引用了 andamio 列,而没有在 from 子句中引用 andamio 表。

    我怀疑不存在子句会给你你所追求的,例如:

    insert into andamio (codtipolocalizacion,
                         txtnombre,
                         codlocalizacion,
                         codcentro,
                         codpublico, 
                         txt_descripcion)
    select '2', 
           'Park',
           myseq_seq.nextval,
           datos.codcentro,
           datos.codparking,
           datos.txtparking
    from   (select codcentro, codparking, txtparking
            from   centro cen
            where  not exists (select null
                               from   andamio an
                               where  cen.codcentro = an.codcentro
                               and    cen.codparking = an.codpublico) datos;
    

    【讨论】:

    • 非常感谢!!这是我的第一篇文章,所以我希望我没有重复任何问题,因为我没有找到其他类似我的问题。
    • 没关系 *{:-) 你的问题中有很多信息(耶!)所以很容易发现。仅供参考,如果您正在执行insert into ... select ...,则选择部分与插入部分完全分开。您应该能够自己运行它,这是检查错误等的有用方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多