更新查询在我的sql程序中无效。为什么?

时间:2016-09-07 15:14:29

标签: mysql

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

1 个答案:

答案 0 :(得分:0)

此查询:

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

(当然,相应地修改新变量名的其余存储过程。)

基本上,作为一般的经验法则,永远不要依赖代码来了解你的意思"。始终明确无误。