Será que alguém me poderá ajudar a encontrar uma solução para o bom funcionamento de uma query?
Tentei construir uma query, através do join de duas tabelas, que resultou para visualizar os dados previamente inseridos, mas acontece que quando tento inserir novos registos, e escrevo nos campos tblceramica.dimbordo e tblceramica.dimbase aparece-me a seguinte mensagem de erro: ORA-01779: não é possível modificar uma coluna que corresponde a uma tabela non key-preserved.
As tabelas e a query são as seguintes:
Tabela 1
CREATE TABLE TBLARTEFACTO
(
IDCODIGOARTEFACTO NUMBER(11) PRIMARY KEY,
NUMEROINVENTARIONACIONAL VARCHAR2(50 BYTE),
NUMEROINVENTARIO VARCHAR2(50 BYTE),
IDCLASSE VARCHAR2(50 BYTE),
IDCATEGORIA VARCHAR2(50 BYTE),
IDMATERIAL VARCHAR2(50 BYTE),
IDTIPOLOGIA NUMBER(11),
LOTE VARCHAR2(50 BYTE),
NUMEROFRAGMENTOS NUMBER(11) DEFAULT 0,
CRONOLOGIA VARCHAR2(50 BYTE),
COMPRIMENTO FLOAT(22),
ALTURA FLOAT(22),
LARGURA FLOAT(22),
ESPESSURA FLOAT(22),
DIAMETRO FLOAT(22),
PESO FLOAT(22),
MARCAS VARCHAR2(50 BYTE),
IDPROVENIENCIA VARCHAR2(50 BYTE),
IDDEPOSITO VARCHAR2(50 BYTE),
IDCOLOCACAO VARCHAR2(50 BYTE),
INCORPORACAO VARCHAR2(50 BYTE),
DATAINCORPORACAO VARCHAR2(50 BYTE),
DATASAIDA VARCHAR2(50 BYTE),
IDESTATUTOPROPRIEDADE VARCHAR2(50 BYTE),
OBSERVACOES CLOB,
IDCODIGOCONTEXTO VARCHAR2(50 BYTE),
IDCODIGOACHADO VARCHAR2(50 BYTE),
IDCODIGODOACAO VARCHAR2(50 BYTE)
)
Tabela 2
CREATE TABLE TBLCERAMICA
(
IDCODIGOARTEFACTO NUMBER(11), PRIMARY KEY
DIMBORDO FLOAT(22),
DIMBASE FLOAT(22)
)
ALTER TABLE TBLCERAMICA ADD (
CONSTRAINT TBLCERAMICATBLARTEFACTO FOREIGN KEY (IDCODIGOARTEFACTO)
REFERENCES TBLARTEFACTO (IDCODIGOARTEFACTO));
CREATE OR REPLACE FORCE VIEW QRYCERAMICA
(IDCODIGOARTEFACTO, NUMEROINVENTARIONACIONAL, NUMEROINVENTARIO, IDCLASSE, IDCATEGORIA,
IDMATERIAL, IDTIPOLOGIA, LOTE, NUMEROFRAGMENTOS, CRONOLOGIA,
COMPRIMENTO, ALTURA, LARGURA, ESPESSURA, DIMBORDO,
DIAMETRO, DIMBASE, PESO, MARCAS, IDPROVENIENCIA,
IDDEPOSITO, IDCOLOCACAO, INCORPORACAO, DATAINCORPORACAO, DATASAIDA,
IDESTATUTOPROPRIEDADE, OBSERVACOES, IDCODIGOCONTEXTO, IDCODIGOACHADO, IDCODIGODOACAO)
AS
SELECT tblartefacto.idcodigoartefacto,
tblartefacto.numeroinventarionacional, tblartefacto.numeroinventario,
tblartefacto.idclasse, tblartefacto.idcategoria,
tblartefacto.idmaterial, tblartefacto.idtipologia, tblartefacto.lote,
tblartefacto.numerofragmentos, tblartefacto.cronologia,
tblartefacto.comprimento, tblartefacto.altura, tblartefacto.largura,
tblartefacto.espessura, tblceramica.dimbordo, tblartefacto.diametro,
tblceramica.dimbase, tblartefacto.peso, tblartefacto.marcas,
tblartefacto.idproveniencia, tblartefacto.iddeposito,
tblartefacto.idcolocacao, tblartefacto.incorporacao,
tblartefacto.dataincorporacao, tblartefacto.datasaida,
tblartefacto.idestatutopropriedade, tblartefacto.observacoes,
tblartefacto.idcodigocontexto, tblartefacto.idcodigoachado,
tblartefacto.idcodigodoacao
FROM tblartefacto LEFT JOIN tblceramica
ON tblceramica.idcodigoartefacto = tblartefacto.idcodigoartefacto
WHERE idcategoria = 'Cerâmica'
Cumprimentos a todos