使用其他密钥

时间:2016-08-06 14:59:56

标签: sql sql-server

我运行一个工具室,我们使用数据库来跟踪我们的工具。通过输入" parent"的ItemID,可以将项目嵌套在其他项目下。 " ParentID"中的工具柱。例如,扳手位于工具箱内,因此工具箱(2)的ItemID输入扳手的ParentID字段中。这是一个示例表:

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)

查询运行没有错误,但不做任何更改。在我的实验过程中,如果我替换" 2"对于@parentid在where子句中,它确实" work",但当然它会为表中的每个项目生成UserTxtBox = box1。如果相反,我设置@parentid = 2,并将变量名留在where子句中,它仍然不起作用。我已经验证了ParentId的值存储在@parentid中,但是当我在where子句中使用该变量时它不起作用。为什么不呢?

ItemID是主键,ParentID是外键。在这些陈述中,键是否与普通整数区别对待?

提前感谢您的任何帮助。经过多年在本网站上查找答案,我仍然惊讶于很多人都有时间分享他们的知识。

1 个答案:

答案 0 :(得分:1)

update的{​​{1}}

怎么样?
join