From 3e4eebfb7ba0bc12070a69d329d5ce14ff27fc2a Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 28 Apr 2024 13:34:36 +0200 Subject: [PATCH] Created DELETE script for old data used in a stored procedure --- misc/delete_data.sql | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 misc/delete_data.sql diff --git a/misc/delete_data.sql b/misc/delete_data.sql new file mode 100644 index 0000000..348b839 --- /dev/null +++ b/misc/delete_data.sql @@ -0,0 +1,31 @@ +CREATE DEFINER=`ds`@`localhost` PROCEDURE `delete_data`() +BEGIN + DECLARE shipcall_id_var int; + DECLARE done INT DEFAULT FALSE; + + DECLARE shipcall_iter CURSOR FOR + SELECT shipcall.id FROM shipcall + LEFT JOIN times ON + times.shipcall_id = shipcall.id AND times.participant_type = 8 + WHERE + -- ARRIVAL + (type = 1 AND GREATEST(shipcall.eta, COALESCE(times.eta_berth, 0)) <= CURRENT_DATE() - INTERVAL 1 MONTH) OR + -- DEPARTURE / SHIFTING + (type != 1 AND GREATEST(shipcall.etd, COALESCE(times.etd_berth, 0)) <= CURRENT_DATE() - INTERVAL 1 MONTH); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN shipcall_iter; + + delete_loop: LOOP + FETCH shipcall_iter INTO shipcall_id_var; + IF done THEN + LEAVE delete_loop; + END IF; + DELETE FROM shipcall_participant_map WHERE shipcall_id = shipcall_id_var; + DELETE FROM shipcall_tug_map WHERE shipcall_id = shipcall_id_var; + DELETE FROM times WHERE shipcall_id = shipcall_id_var; + DELETE FROM shipcall WHERE id = shipcall_id_var; + END LOOP; + CLOSE shipcall_iter; +END \ No newline at end of file