Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Atualizando uma visualização de junção sem obter o erro não preservado por chave


Você não pode atualizar column_from_table2 nesta visualização, não é atualizável.
Para verificar se alguma coluna é atualizável ou não, execute esta consulta:
SELECT * FROM USER_UPDATABLE_COLUMNS
WHERE table_name = 'MY_DATAVIEW';

OWNER                          TABLE_NAME                     COLUMN_NAME                    UPDATABLE INSERTABLE DELETABLE
------------------------------ ------------------------------ ------------------------------ --------- ---------- ---------
TEST                           MY_DATAVIEW                    KEY1                           YES       YES        YES       
TEST                           MY_DATAVIEW                    KEY2                           YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE1             YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE2             NO        NO         NO   

Por que não é atualizável? É uma grande questão.
Há um capítulo inteiro na documentação sobre este tópico:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006234
encontre "Atualizando visualizações que envolvem associações externas", há um exemplo de uma visualização com associação externa e uma explicação detalhada de quais colunas nessa visualização podem e não podem ser atualizadas e por quê.