首页 > 解决方案 > 更新具有唯一标识符值的多行的列

问题描述

让我先道歉,因为这可能是一个愚蠢的问题。我应该是UPDATE一个uniqueidentifier数据类型的列,比如表列是 (id, username, pwd, Uuid)列在Uuid哪里uniqueidentifier

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 记录具有不同的值?提前致谢!

标签: sql-serverdatabase

解决方案


你可以试试这个。

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

推荐阅读