Sign in with Microsoft
New to Microsoft? Create an account.

INTRODUÇÃO

A coluna de data/hora de uma tabela pode ser utilizada para determinar se qualquer valor na linha tabela foi alterado desde a última vez que a tabela foi lida. Este artigo descreve uma forma de utilizar a coluna de data/hora de uma tabela para controlo da simultaneidade optimista no Microsoft SQL Server 2005.

Mais informações

Pode adicionar uma coluna de data/hora a uma tabela para ajudar a manter a integridade da base de dados quando vários utilizadores actualizam linhas ao mesmo tempo. Também poderá saber quantas linhas e as linhas que foram actualizadas sem voltar a consultar a tabela.

Por exemplo, suponha que cria uma tabela com o nome MyTest. Povoar alguns dados na tabela executando as seguintes instruções de Transact-SQL.

CREATE TABLE MyTest (myKey int PRIMARY KEY, myValue int, TS timestamp)
GO
INSERT INTO MyTest (myKey, myValue) VALUES (1, 0)
GO
INSERT INTO MyTest (mykey, myValue) VALUES (2, 0)
GO

Em seguida, pode utilizar as seguintes instruções de Transact-SQL de exemplo para implementar o controlo de simultaneidade optimista na tabela MyTest durante a actualização.

DECLARE @t TABLE (myKey int)
UPDATE MyTest SET myValue = 2
OUTPUT inserted.myKey into @t(myKey)
WHERE myKey = 1 and TS = TSValueIF (SELECT COUNT(*) FROM @t) = 0
BEGIN
RAISERROR ('error changing row with myKey = %d',
16, -- Severity.
1, -- State.
1) -- myKey that was changed
END

Nota TSValue é o valor de coluna de data/hora para a linha que indica a última vez que ler a linha. Este valor deve ser substituído pelo valor real timestamp . Um exemplo do valor real timestamp é 0x00000000000007D3.

Também pode colocar as instruções de Transact-SQL da amostra numa transacção. Consultando a variável @t no âmbito da transacção, é possível obter a coluna actualizado myKey da tabela sem voltar a consultar a tabela MyTest .

Para mais informações sobre o tipo de coluna de data/hora , visite o seguinte Web site da Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/ms182776.aspx

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?

Obrigado pelo seu feedback!

×