Can anyone help me find a solution for the proper functioning of a query?
I tried to build a query, through the join of two tables, which resulted to visualize the data previously inserted, but it turns out that when I try to insert new records, and write in the fields TblreneMica.dimbordo and Tblceramica. DimBase The following error message appears: ORA-01779: Can not modify a column that corresponds to a non key-preserved table.
The tables and query are as follows:
Table 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)
)
Table 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'
Thanks for the attention
compliments to all