За последние 24 часа нас посетили 21575 программистов и 1021 робот. Сейчас ищут 720 программистов ...

Странное поведение запроса в хранимой процедуре.

Тема в разделе "MySQL", создана пользователем demwf, 4 май 2020.

  1. demwf

    demwf Новичок

    С нами с:
    4 май 2020
    Сообщения:
    1
    Симпатии:
    0
    Всем мир! Имею такой запрос на удаление.
    Код (Text):
    1. DELETE FROM tbl_clicks
    2. WHERE id IN (
    3.     SELECT * FROM (
    4.         SELECT id
    5.         FROM tbl_clicks
    6.         WHERE DATE_ADD BETWEEN STR_TO_DATE( '01.01.2019', '%d.%m.%Y' ) AND STR_TO_DATE( '01.01.2020', '%d.%m.%Y' )
    7.         AND conversion_price_main = 0
    8.     ) AS cl
    9. );
    Отрабатывает долго (много записей на удаление), но все работает.
    Помещаю такой запрос в хранимую процедуру, и трутся вообще все записи. Полностью.
    Никак не могу понять причину. Такое ощущение что или каких то кешей не хватает, или ограничение на вложенность. Ошибок нет, просто пустая таблица на выходе. Может кто сталкивался с подобным?
    Вот текст процедуры:
    Код (Text):
    1. DELIMITER $$
    2. USE `tr`$$
    3. DROP PROCEDURE IF EXISTS `b_delete_tbl_clicks`$$
    4. CREATE DEFINER=`mysql`@`%` PROCEDURE `b_delete_tbl_clicks`(OUT `happy_end` BOOLEAN)
    5.     MODIFIES SQL DATA
    6.  
    7. BEGIN
    8. DELETE FROM tbl_clicks
    9. WHERE id IN (
    10.         SELECT * FROM (
    11.         SELECT id
    12.         FROM tbl_clicks
    13.         WHERE DATE_ADD BETWEEN STR_TO_DATE( '01.01.2019', '%d.%m.%Y' ) AND STR_TO_DATE( '01.01.2020', '%d.%m.%Y' )
    14.         AND conversion_price_main = 0
    15.     ) AS cl
    16. );
    17. SET happy_end = TRUE;
    18. END$$
    19. DELIMITER ;