0

I am trying to delete a single row using a stored procedure in MySQL, however the stored procedure is deleting all rows. The stored procedure is:

CREATE DEFINER=`sherattd`@`%` PROCEDURE `deleteFilm`(in ID int)
BEGIN
    delete from films where id=ID;
END

The table I am trying to delete from has headings:

create table films (
   id int(8),
   title varchar(100),
   year int(8),
   director varchar(100),
   stars varchar(100),
   review text);

Thanks

  • Possible duplicate of [Is SQL syntax case sensitive?](https://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive) – Emka Jan 08 '18 at 13:46

2 Answers2

7

Because you use as parameter the same name as the column name. It is case insensitive.

where id=id

is always true. Choose another parameter name!

juergen d
  • 201,996
  • 37
  • 293
  • 362
0

Parameter name needs to be different as per answer by @juergen d

e.g.

CREATE DEFINER=`sherattd`@`%` PROCEDURE `deleteFilm`(in FID int)
BEGIN
    delete from films where id=FID;
END
Jonathan Fingland
  • 56,385
  • 11
  • 85
  • 79