Code: |
DELIMITER $$ DROP FUNCTION IF EXISTS `adatabase`.`delNodeAndChildren` $$ CREATE FUNCTION `adatabase`.`delNodeAndChildren` (delete_eventnode_id INT) RETURNS bool BEGIN SELECT lft as myLeft, rgt as myRight, (rgt - lft + 1) as myWidth FROM event_nodes WHERE eventnode_id = delete_eventnode_id LIMIT 1; SELECT @numrows := FOUND_ROWS(); if @numrows = 1 then DELETE FROM event_nodes WHERE lft BETWEEN myLeft AND myRight; UPDATE event_nodes SET rgt = rgt - myWidth WHERE rgt > myRight; UPDATE event_nodes SET lft = lft - myWidth WHERE lft > myRight; return true; end if; return false; END $$ DELIMITER ; |
output generated using printer-friendly topic mod, All times are GMT + 2 Hours