Instrução UPDATE UPDATE statement

A instrução UPDATE define o valor na coluna.

Pode ser atualizada a linha corrente de um cursor atualizável aberto. Se não houver linha corrente, ou a linha corrente não satisfizer mais a consulta do cursor, será lançada um exceção.

Sintaxe { UPDATE nome-da-tabela SET nome-da-coluna = Valor [ , nome-da-coluna = Valor} ]* [Cláusula WHERE] | UPDATE nome-da-tabela SET nome-da-coluna = Valor [ , nome-da-coluna = Valor ]* WHERE CURRENT OF }

A primeira forma sintática é chamada de atualização procurada. A segunda forma sintática é chamada de atualização posicionada.

Nas atualizações procuradas, são atualizadas todas as linhas da tabela para as quais a cláusula WHERE é avaliada como TRUE.

Nas atualizações posicionadas, somente podem ser atualizadas as colunas incluídas na Cláusula FOR UPDATE da instrução SELECT que criou o cursor. Se a instrução SELECT não incluir a cláusula FOR UPDATE, o cursor será apenas-de-leitura, não podendo ser utilizado para atualizações.

A especificação de DEFAULT para o valor atualizado, define o valor da coluna como o valor padrão definido nesta tabela.

-- Todos os empregados, exceto o gerente, -- do departamento (DEP_TRAB) 'E21' foram temporariamente -- reatribuídos. Indique isto alterando seus cargos (CARGO) -- para NULL, e os valores de seus pagamentos (SALÁRIO, BÔNUS, COMISS) -- para zero, na tabela EMPREGADOS. UPDATE EMPREGADOS SET CARGO=NULL, SALÁRIO=0, BÔNUS=0, COMISS=0 WHERE DEP_TRAB = 'E21' AND CARGO <> 'GERENTE' -- Promover o cargo (CARGO) de determinado empregado para GERENTE UPDATE EMPREGADOS SET CARGO = 'GERENTE' WHERE CURRENT OF CURS1; -- Multiplicar a equipe do projeto (PROJ_EQUIPE) por 1.5 stmt.executeUpdate("UPDATE PROJETO SET PROJ_EQUIPE = " "PROJ_EQUIPE * 1.5" + "WHERE CURRENT OF" + ResultSet.getCursorName()); -- Alterar o cargo (CARGO) do empregado número (NUM_EMP) '000290' -- na tabela EMPREGADOS para o seu valor DEFAULT que é NULL UPDATE EMPREGADOS SET CARGO = DEFAULT WHERE NUM_EMP = '000290';
Sistema de dependência de instrução

A instrução de atualização procurada depende da tabela sendo atualizada, de todos os seus conglomerados (unidades de armazenamento como heaps e índices), todas as suas restrições, e de todas as outras tabelas referenciadas na cláusula WHERE e nas expressões SET. A execução de uma instrução CREATE ou DROP INDEX, ou de uma instrução ALTER TABLE, na tabela de destino de uma instrução de atualização procurada preparada, invalida a instrução de atualização procurada preparada.

A instrução de atualização posicionada depende do cursor e de todas as tabelas que o cursor faz referência. A atualização posicionada pode ser compilada mesmo se o cursor ainda não tiver sido aberto. Entretanto, a remoção do cursor aberto através do método close do JDBC invalida a atualização posicionada.

A execução de uma instrução CREATE ou DROP INDEX, ou de uma instrução ALTER TABLE, na tabela de destino de uma instrução de atualização posicionada preparada, invalida a instrução de atualização posicionada preparada.

A remoção de um aliás invalida a instrução de atualização preparada, se a instrução utilizar o aliás.

Remover ou adicionar gatilhos na tabela de destino da atualização invalida a instrução de atualização.