Deleting a page from the wiki doesn’t actually remove it, just hides it away. Here’s a procedure to permanently remove things from the database, and never ever see them again.
DROP PROCEDURE IF EXISTS delete_page; DELIMITER // CREATE PROCEDURE delete_page(IN page_id_var INT) LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER COMMENT 'permanently deletes pages from the database' BEGIN DECLARE page_title_var VARCHAR(255); DECLARE page_namespace_var INT; SELECT page_title, page_namespace INTO page_title_var, page_namespace_var FROM page WHERE page_id = page_id_var; DELETE FROM redirect WHERE rd_from = page_id_var; DELETE FROM externallinks WHERE el_from = page_id_var; DELETE FROM langlinks WHERE ll_from = page_id_var; DELETE FROM searchindex WHERE si_page = page_id_var; DELETE FROM page_restrictions WHERE pr_page = page_id_var; DELETE FROM pagelinks WHERE pl_from = page_id_var; DELETE FROM categorylinks WHERE cl_from = page_id_var; DELETE FROM templatelinks WHERE tl_from = page_id_var; DELETE text.* FROM text LEFT JOIN revision ON (rev_text_id = old_id) WHERE rev_page = page_id_var; DELETE FROM revision WHERE rev_page = page_id_var; DELETE FROM imagelinks WHERE il_from = page_id_var; DELETE FROM recentchanges WHERE rc_namespace = page_namespace_var AND rc_title = page_title_var; DELETE text.* FROM text LEFT JOIN archive ON (ar_text_id = old_id) WHERE ar_namespace = page_namespace_var AND ar_title = page_title_var; DELETE FROM archive WHERE ar_namespace = page_namespace_var AND ar_title = page_title_var; DELETE FROM logging WHERE log_namespace = page_namespace_var AND log_title = page_title_var; DELETE FROM watchlist WHERE wl_namespace = page_namespace_var AND wl_title = page_title_var; DELETE FROM page WHERE page_id = page_id_var LIMIT 1; END// DELIMITER ; |
DROP PROCEDURE IF EXISTS delete_page; DELIMITER // CREATE PROCEDURE delete_page(IN page_id_var INT) LANGUAGE SQL NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER COMMENT 'permanently deletes pages from the database' BEGIN DECLARE page_title_var VARCHAR(255); DECLARE page_namespace_var INT; SELECT page_title, page_namespace INTO page_title_var, page_namespace_var FROM page WHERE page_id = page_id_var; DELETE FROM redirect WHERE rd_from = page_id_var; DELETE FROM externallinks WHERE el_from = page_id_var; DELETE FROM langlinks WHERE ll_from = page_id_var; DELETE FROM searchindex WHERE si_page = page_id_var; DELETE FROM page_restrictions WHERE pr_page = page_id_var; DELETE FROM pagelinks WHERE pl_from = page_id_var; DELETE FROM categorylinks WHERE cl_from = page_id_var; DELETE FROM templatelinks WHERE tl_from = page_id_var; DELETE text.* FROM text LEFT JOIN revision ON (rev_text_id = old_id) WHERE rev_page = page_id_var; DELETE FROM revision WHERE rev_page = page_id_var; DELETE FROM imagelinks WHERE il_from = page_id_var; DELETE FROM recentchanges WHERE rc_namespace = page_namespace_var AND rc_title = page_title_var; DELETE text.* FROM text LEFT JOIN archive ON (ar_text_id = old_id) WHERE ar_namespace = page_namespace_var AND ar_title = page_title_var; DELETE FROM archive WHERE ar_namespace = page_namespace_var AND ar_title = page_title_var; DELETE FROM logging WHERE log_namespace = page_namespace_var AND log_title = page_title_var; DELETE FROM watchlist WHERE wl_namespace = page_namespace_var AND wl_title = page_title_var; DELETE FROM page WHERE page_id = page_id_var LIMIT 1; END// DELIMITER ;
Now you can look up your article ID, and then call the procedure with CALL delete_page(999);
.