独特的价值来更新记录,基本上我有两个表,表A和表BSQL试图从申报表
表A,我将插入然后更新
表B是一个表用dateTokens,timeTokens,tokenOrder拍摄
我已经声明了一个名为@taken的表,它复制TableB并将其值放入其中。
我所试图做的是以下几点:
申报表@taken
插入记录表A
从刚插入记录获取ID通过SCOPE_IDENTITY()
将来自TableB的数据插入到@taken中,其中从TableB中获取的是0 (TableB中的一些记录将被标记为1,所以我只想要不记录的记录)同样在这一步中,我通过Row_Number()Over(Order By tokenOrder)将tokenOrder重做为tokenOrder。
从@taken表选择新tokenOrder在表A等于从新插入的行的ID
与timeToken和dateToken更新表A其中,ID是等于从新插入的行的ID在表A
更新表B timeToken和dateToken作为拍摄地点tokenOrder在表A等于从新插入的行的ID
我的问题是,这种代码在一个存储过程中,我将存储过程的调用放到一个循环中,循环了200次,当我运行它时,我得到了我期望的确切行数,但结果并不正确。
我的表B的数据看起来像这样
dateToken timeToken tokenOrder taken
Monday 1:00pm 1 0
Monday 1:10pm 2 0
Monday 1:20pm 3 0
等一路到半夜10分钟内增加。 (有像3个小时的休息的地方在那里)
结果
dateToken timeToken
Monday 1:10pm
Monday 1:30pm
Monday 1:50pm
Monday 2:10pm
Monday 2:30pm
所以它似乎是跳过所有其他timeToken我得到的,当我跑我的存储过程,我不知道为什么
这里是我的代码:
@dateToken nvarchar(MAX) OUTPUT,
@timeToken nvarchar(MAX) OUTPUT,
Declare @TableA_PK BIGINT
DECLARE @taken table(
id int NOT NULL,
dateToken nvarchar(max),
timeToken nvarchar(max),
tokenOrder int,
taken bit);
INSERT INTO TableA (dateToken, timeToken) VALUES (‘’, ‘’)
SET @TableA_PK=SCOPE_IDENTITY()
INSERT INTO @taken SELECT id, dateToken, timeToken, Row_Number() Over (Order By tokenOrder) As tokenOrder, taken FROM TableB WHERE taken = 0
SELECT @dateToken = dateToken, @timeToken = timeToken FROM @taken WHERE tokenOrder = @TableA_PK
UPDATE TableA SET dateToken = @dateToken, timeToken = @timeToken WHERE id = @TableA_PK
UPDATE TableB SET taken = 1 WHERE tokenOrder = @TableA_PK
任何帮助将非常感激。请帮忙,我一直在为这一天苦苦挣扎
另一件事,当我运行这段代码后查看TableB中的数据时,所有的行都被标记为预期值。