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)