插入选择(无效的标识符错误)

时间:2015-11-10 09:49:20

标签: oracle

我有一个名为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(...))]和其他许多... 我总是得到无效标识符,因为Oracle声称在Andamio表中没有名为CODPUBLICO的列,但确实存在。

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

1 个答案:

答案 0 :(得分:0)

您收到该错误是因为您在insert语句的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;