【发布时间】:2014-06-05 00:50:22
【问题描述】:
我认为我可以使用 WHILE LOOP 来做到这一点,但它每次都会更新所有行。
我有一个表,我需要使用应用程序唯一值函数更新两个具有唯一 ID 的字段。该函数给了我一个 GUID (Trans),另一个给了我一个唯一的 Trans_ID。我需要使用这些唯一 ID 更新每一行。
我将更新一行,运行函数以获取下一个唯一数字,然后填充下一行。我不知道该怎么做。
DECLARE @RowCount as INT
DECLARE @IntFlag as INT
SET @IntFlag = 1
SELECT @RowCount = count(*) from trans_periodic_retainer_final
DECLARE @TransID as char(20)
DECLARE @BatchID uniqueidentifier
WHILE @IntFlag <=@RowCount
BEGIN
/* Functions to get the unique values */
UPDATE Increments SET Increment = Increment+1 WHERE v7Tables = 'Transactions' AND Site = 'TESTSERVER'
SET @BatchID = newid()
SELECT @TransID = Increment FROM Increments WHERE v7Tables = 'Transactions' AND Site = 'TESTSERVER'
UPDATE Transactions set trans = @BatchId, Trans_id = @TransID
SET @IntFlag = @intFlag +1
END
任何帮助将不胜感激。
【问题讨论】:
-
这些独特的价值从何而来?
-
您尝试了哪些查询,发生了什么?目标表是如何定义的?
-
每一行都需要是唯一可识别的(通常使用主键)。那么你可以做
update table set a=x where k=y -
请给出函数定义和目前尝试过的代码。
-
我确定这是我忽略的一些简单的事情。
标签: sql sql-server tsql