1
我需要在添加唯一约束之前更新表的“Order”列,以避免添加约束时出错。要更新这个领域我试着做下面的T-SQL代码:更新尚未提取的游标行中的数据sql server
DECLARE c_x CURSOR FOR
SELECT ID, ISOLD, ISNEW, GROUPID, ORDER, ISENABLED
FROM mytable
OPEN c_x;
FETCH NEXT FROM c_x INTO @ID, @ISOLD, @ISNEW, @GROUPID, @ORDER, @ISENABLED;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SUMOFROWS = COUNT(*) FROM mytable
WHERE ISOLD = @ISOLD
AND ISNEW = @ISNEW
AND GROUPID = @GROUPID
AND ORDER = @ORDER
AND ISENABLED = @ISENABLED;
IF @SUMOFROWS > 1
BEGIN
UPDATE mytable
SET ORDER = ORDER+ 1
WHERE ISOLD = @ISOLD
AND ISNEW = @ISNEW
AND GROUPID = @GROUPID
AND ISENABLED = @ISENABLED
AND ORDER >= @ORDER
AND ID <> @ID
END
FETCH NEXT FROM CURSOR_TIPOS_AGENDA INTO @ID, @ISOLD, @ISNEW, @GROUPID, @ORDER, @ISENABLED
END
表数据:
ID ISOLD ISNEW GROUPID ORDER ISENABLED
1 1 0 500 1 1
2 0 0 500 1 1
3 0 0 500 1 1
THE NEW唯一约束
CREATE UNIQUE NONCLUSTERED INDEX [XAK1_mytable] ON mytable([ORDER], [ISENABLED], [ISOLD`], [ISNEW], [GROUPID])
中添加的独特ERROR约束在表行中发生,ID为3.上面的代码应该用ID 3的顺序更新行2
但是,这段代码并不会更新表的行。有人知道如何更新我尚未在光标中获取的行?
这听起来像一个[XY问题( http://meta.stackexchange.com/a/66378/346416)您可以分享您尝试解决的问题,而不是尝试解决方案的问题吗? – SqlZim