Хранимая процедура MySQL игнорирует оператор УДАЛЕНИЯ

#php #mysql #sql #stored-procedures #procedure

#php #mysql #sql #хранимые процедуры #процедура

Вопрос:

У меня есть эта хранимая процедура, которая вызывается из PHP-скрипта. В нем есть несколько операторов select и оператор delete. Все работает нормально, кроме того, что запрос на удаление не выполняется. Он игнорируется!! Пожалуйста, помогите. Спасибо

 CREATE PROCEDURE `proc_name`(IN id INT, IN type CHAR(50))
DETERMINISTIC
COMMENT 'procedure'
BEGIN 
DECLARE LEGACY_EN_ID INT;
SET IN_ID = id;
SELECT  IF(e.legacy_id > 0, e.legacy_id, 0) INTO LEGACY_EN_ID FROM tablename e WHERE e.id = IN_ID LIMIT 1;

/* Delete record if it exists */
        DELETE
        FROM tablename
        WHERE entityID = LEGACY_EN_ID;
 

Комментарии:

1. Сгенерируйте некоторый пример скрипки SQL, создайте ошибку и отправьте ее вместе с вашим запросом.

2. Игнорируется или условие where приводит к тому, что записи не являются релевантными

3. @Randy нигде нет коммитов.

4. @TonyHopkinson если я жестко задаю идентификатор кода в запросе на удаление, это работает, но я проверил, что LEGACY_EN_ID имеет значение, так как при печати SELECT LEGACY_EN_ID в хранимой процедуре он показывает мне идентификатор…

5. Немного догадываюсь, только что заметил, что вы используете CHAR(50) вместо VarChar(50)…

Ответ №1:

  1. Убедитесь, что у пользователя, выполняющего хранимую процедуру, есть разрешение на это.
  2. Это можно проверить, направив соединение через командную строку mysql с тем же пользователем и попытавшись выполнить запрос, сгенерированный в хранимой процедуре.
  3. Или создайте простой PHP-скрипт и вызовите напрямую delete sql с помощью mysql_query. Если это успешно, у вас есть доступ.

Комментарии:

1. пробовал. разрешение выглядит нормально … все еще нет радости от оператора удаления