使用delete语句时,我的过程将删除所有行

时间:2018-11-20 23:09:08

标签: mysql stored-procedures row procedure

那是我的桌子:

create table if not exists Ditte(nome varchar(30), luogo varchar(30), ZIP int);

那是我的程序:

delimiter // 
create procedure deleteDitta(zip int)
begin
DECLARE newZIP int;
SET newZIP = zip;
DELETE from Ditte where ZIP = newZIP;
end;
// 
delimiter ;

这是我在表格中添加的内容:

insert ignore into Ditte values ("Ditta1", "city1", 6828);
insert ignore into Ditte values ("Ditta2", "city2", 12345);

当我调用过程deleteDitta并将“ 12345”作为参数(例如:call deleteDitta(12345);)时,该过程应仅删除表“ Ditte”中的第二行,但会删除所有表表的内容。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

这似乎是MySQL对列名和变量名感到困惑。将您的过程更改为此可以解决问题:

create procedure deleteDitta(dzip int)
begin
    DELETE from Ditte where ZIP = dzip;
end;

Demo on dbfiddle