Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Сравнение ISNULL(поле, NEWID()) c другим UNIQUEIDENTIFIER при UPDATE не работает

$
0
0
Доброго всем
SELECT @@VERSION

Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)
Jun 17 2016 19:14:09
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: )

А теперь фокус
DECLARE @NewID UNIQUEIDENTIFIER = NEWID()

DECLARE @T TABLE (PK INT PRIMARY KEY, ID UNIQUEIDENTIFIER)
INSERT INTO @T VALUES(1, NULL)

WHILE 1 = 1
BEGIN

	UPDATE @T SET ID = @NewID WHERE PK = 1 AND ISNULL(ID, NEWID()) <> @NewID
	
	IF @@ROWCOUNT = 0
	BEGIN
		SELECT 'WTF',  *, @NewID FROM @T WHERE PK = 1

		BREAK
	END

	UPDATE @T SET ID = NULL WHERE PK = 1 
	
END


Подскажите, каким макаром оно может попасть в IF @@ROWCOUNT = 0?
Это баг? Кто нибудь его репортал уже?

Viewing all articles
Browse latest Browse all 7251

Trending Articles