更新具有多行具有uniqueidentifier值的列

时间:2019-04-15 09:24:29

标签: sql-server database

让我开始道歉,因为这可能是一个愚蠢的问题。我应该UPDATE属于uniqueidentifier数据类型的列,说表列是(id,username,pwd,Uuid),其中Uuiduniqueidentifier列。

Uuid列具有多个空值。我应该通过从外部存储过程生成v1版本的uuid来对此进行更新。

我尝试了类似以下代码的方法,但是它不起作用。 (GetOptimizedUuid SP生成V1 Uuid)

DECLARE @no INT;
DECLARE @i INT;

SET @no = (SELECT COUNT(id) FROM table1)

SET @i = 0;

WHILE @i < @no  
BEGIN
    DECLARE @TempUuid TABLE (SeqUuid UNIQUEIDENTIFIER,  
                             OptimizedUuid UNIQUEIDENTIFIER)

    INSERT INTO @TempUuid
        EXECUTE [dbo].[GetOptimizedUuid]

    UPDATE table1  
    SET Uuid = (SELECT OptimizedUuid 
                FROM @TempUuid) 
    WHERE Uuid IS NULL AND LIMIT 1, @no;

    SET @i = @i + 1;
END

如果它有7个记录,而只有2个记录具有Uuid值,如何更新以使其余5个Uuid记录具有不同的值?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试一下。

DECLARE @affectedrows INT;

SET @affectedrows = 1;

WHILE @affectedrows > 0  
BEGIN
    DECLARE @TempUuid TABLE (SeqUuid UNIQUEIDENTIFIER,  
                             OptimizedUuid UNIQUEIDENTIFIER)

    INSERT INTO @TempUuid
        EXECUTE [dbo].[GetOptimizedUuid]

    UPDATE TOP(1) table1  
    SET Uuid = (SELECT TOP 1 OptimizedUuid 
                FROM @TempUuid) 
    WHERE Uuid IS NULL 

    SET @effectedeows = @@ROWCOUNT

END