Partilhar via


ATUALIZAÇÃO - Funções de Disparo (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve um valor booleano que indica se foi feita uma tentativa INSERT ou UPDATE numa coluna especificada de uma tabela ou vista. UPDATE() é usado em qualquer parte do corpo de um gatilho Transact-SQL INSERT ou UPDATE para testar se o gatilho deve executar certas ações.

Transact-SQL convenções de sintaxe

Sintaxe

UPDATE ( column )   

Arguments

coluna
É o nome da coluna para testar uma ação INSERT ou UPDATE. Como o nome da tabela está especificado na cláusula ON do disparador, não inclua o nome da tabela antes do nome da coluna. A coluna pode ser de qualquer tipo de dado suportado pelo SQL Server. No entanto, colunas calculadas não podem ser usadas neste contexto.

Tipos de devolução

booleano

Observações

UPDATE() devolve TRUE independentemente de uma tentativa INSERT ou UPDATE ser bem-sucedida.

Para testar uma ação INSERT ou UPDATE para mais do que uma coluna, especifique uma cláusula UPDATE(column) separada após a primeira. Múltiplas colunas também podem ser testadas para ações INSERT ou UPDATE usando COLUMNS_UPDATED. Isto devolve um padrão de bits que indica quais as colunas inseridas ou atualizadas.

IF UPDATE devolve o valor TRUE nas ações INSERT porque as colunas têm valores explícitos ou valores implícitos (NULL) inseridos.

Observação

A cláusula IF UPDATE(coluna) funciona da mesma forma que um IF, SE... ELSE, ou WHILE e pode usar a cláusula BEGIN... FIM do bloco. Para mais informações, consulte Linguagem de Controlo do Fluxo (Transact-SQL).

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

Se um gatilho for aplicado a uma coluna, o UPDATED valor retornará como true ou 1, mesmo que o valor da coluna permaneça inalterado. Isso é por design, e o gatilho deve implementar uma lógica de negócios que determine se a operação de inserção/atualização/exclusão é permitida ou não.

Examples

O exemplo seguinte cria um gatilho que imprime uma mensagem para o cliente quando alguém tenta atualizar as StateProvinceID colunas or PostalCode da Address tabela.

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  

Ver também

COLUMNS_UPDATED (Transact-SQL)
CRIAR GATILHO (Transact-SQL)