更新查询不工作在我的sql程序。为什么?
问题描述:
CREATE PROCEDURE Sp_IU_Group(
GID int,
GroupName nvarchar(200),
UserID int,
Status int
)
BEGIN
IF GID=0 THEN
Insert into tblGroup (GroupName,UserID,Status)
values (GroupName,UserID,Status);
else
update tblGroup set GroupName=GroupName,UserID=UserID,Status=Status WHERE GID=GID;
END IF;
END
答
这个查询:
update tblGroup set GroupName=GroupName,UserID=UserID,Status=Status WHERE GID=GID
将更新表中的每一记录... 本身。这每一个匹配的记录,因为这是总是真:
WHERE GID=GID
而这个更新的值本身:
GroupName=GroupName
的问题是,你使用相同的名称对于多个事物。给予不同的名字。事情如此简单:
CREATE PROCEDURE Sp_IU_Group(
GIDNew int,
GroupNameNew nvarchar(200),
UserIDNew int,
StatusNew int
)
(或使用任何其他标准要从数据库对象,如具有像@
特殊字符前面加上他们区分变量)
然后查询可以看出其中的差别:(修改相应的存储过程的其余部分为新的变量名,当然)
update tblGroup set GroupName=GroupNameNew,UserID=UserIDNew,Status=StatusNew WHERE GID=GIDNew
基本上,作为一般的经验法则,从不依靠代码来“知道你的意思”。永远是明确的,毫不含糊的。
+0
它工作得很好。 –
给你的列和你的变量*相同的确切名称*似乎是一个坏主意。 – David
你能定义“不工作”吗? - 您是否看到错误讯息? –
没有任何错误它已更新所有行。 –