我运行一个工具室,在其中使用数据库来跟踪我们的工具。通过在“ ParentID”列中输入“父”工具的ItemID,可以将项目嵌套在其他项目下。例如,扳手位于工具箱内,因此在扳手的ParentID字段中输入了工具箱(2)的ItemID。这是一个示例表:
ItemID BarcodeID Name ParentId UserTxtBox
1 0001 Wrench 2 null
2 box1 Tool Box null null
3 0002 Socket 4 null
4 box2 Tool Box null null
我正在尝试将UsrTxtBox的值设置为其父项的BarcodeID,如下所示:
ItemID BarcodeID Name ParentId UserTxtBox
1 0001 Wrench 2 box1
2 box1 Tool Box null null
3 0002 Socket 4 box2
4 box2 Tool Box null null
我提出但不起作用的查询是:
DECLARE @parentid int
SET @parentid = null
UPDATE dbo.items
SET @parentid = ParentId
,UserTxtBox = (SELECT BarcodeId FROM dbo.items WHERE ItemId = @parentID)
查询运行没有错误,但没有进行任何更改。在我进行实验的过程中,如果我在where子句中用@parentid替换“ 2”,则它可以“工作”,但是对于表中的每个项目,它当然会使UserTxtBox = box1。如果相反,我将@parentid设置为2,并将变量名保留在where子句中,则它仍然不起作用。我已经验证了ParentId的值已存储在@parentid中,但是当我在where子句中使用变量时,它不起作用。为什么不?
ItemID是主键,ParentID是外键。这些语句中的键与普通整数是否有所不同?
在此先感谢您的协助。经过多年在该站点上查找答案后,仍然令我惊讶的是,如此多的人花时间分享他们的知识。
如何update
搭配join
:
update i
set UserTxtBox = p.BarcodeID
from dbo.items i join
dbo.items p
on i.ParentId = p.ItemId;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句