Compartilhar via


UPDATE – Funções de gatilho (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna um valor booliano que indica se foi feita uma tentativa de INSERT ou UPDATE em uma coluna especificada de uma tabela ou exibição. UPDATE() é usado em qualquer lugar no corpo de um gatilho INSERT ou UPDATE do Transact-SQL para testar se o gatilho deve executar determinadas ações.

Convenções de sintaxe de Transact-SQL

Sintaxe

UPDATE ( column )   

Argumentos

column
É o nome da coluna a ser testada para uma ação INSERT ou UPDATE. Como o nome da tabela está especificado na cláusula ON do gatilho, não inclua o nome da tabela antes do nome da coluna. A coluna pode ser de qualquer tipo de dados compatível com o SQL Server. Entretanto, não é possível usar colunas computadas nesse contexto.

Tipos de retorno

Booliano

Comentários

UPDATE() retorna TRUE, independentemente de uma tentativa de INSERT ou UPDATE ter êxito.

Para testar uma ação INSERT ou UPDATE para mais de uma coluna, especifique uma cláusula UPDATE(column) separada após a primeira. Também é possível testar várias colunas para ações INSERT ou UPDATE usando COLUMNS_UPDATED. Isto retorna um padrão de bits que indica quais colunas foram inseridas ou atualizadas.

IF UPDATE retorna o valor TRUE em ações INSERT porque as colunas tiverem valores explícitos ou implícitos (NULL) inseridos.

Observação

A cláusula IF UPDATE(column) funciona da mesma forma que uma cláusula IF, IF...ELSE ou WHILE, podendo usar o bloco BEGIN...END. Para obter mais informações, confira Linguagem de controle de fluxo (Transact-SQL).

UPDATE(column) pode ser usado em qualquer lugar do corpo de um gatilho Transact-SQL.

Se um gatilho se aplicar a uma coluna, o valor UPDATED será retornado como true ou 1, mesmo que o valor da coluna permaneça inalterado. Isso é por design, e o gatilho deve implementar a lógica de negócios que determina se a operação de inserir/atualizar/excluir é permitida ou não.

Exemplos

O exemplo a seguir cria um gatilho que imprime uma mensagem para o cliente quando qualquer pessoa tentar atualizar as colunas StateProvinceID ou PostalCode da tabela Address.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT name FROM sys.objects  
      WHERE name = 'reminder' AND type = 'TR')  
   DROP TRIGGER Person.reminder;  
GO  
CREATE TRIGGER reminder  
ON Person.Address  
AFTER UPDATE   
AS   
IF ( UPDATE (StateProvinceID) OR UPDATE (PostalCode) )  
BEGIN  
RAISERROR (50009, 16, 10)  
END;  
GO  
-- Test the trigger.  
UPDATE Person.Address  
SET PostalCode = 99999  
WHERE PostalCode = '12345';  
GO  

Consulte Também

COLUMNS_UPDATED (Transact-SQL)
CREATE TRIGGER (Transact-SQL)