SET NAMES utf8mb4; SET @plan_deleted_exists=(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='membership_plans' AND COLUMN_NAME='deleted_at'); SET @plan_deleted_sql=IF(@plan_deleted_exists=0,'ALTER TABLE membership_plans ADD COLUMN deleted_at DATETIME(3) NULL AFTER updated_at','SELECT 1'); PREPARE plan_deleted_stmt FROM @plan_deleted_sql; EXECUTE plan_deleted_stmt; DEALLOCATE PREPARE plan_deleted_stmt; SET @order_deleted_exists=(SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='orders' AND COLUMN_NAME='deleted_at'); SET @order_deleted_sql=IF(@order_deleted_exists=0,'ALTER TABLE orders ADD COLUMN deleted_at DATETIME(3) NULL AFTER updated_at','SELECT 1'); PREPARE order_deleted_stmt FROM @order_deleted_sql; EXECUTE order_deleted_stmt; DEALLOCATE PREPARE order_deleted_stmt; SET @plan_deleted_index_exists=(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='membership_plans' AND INDEX_NAME='idx_plan_deleted_sort'); SET @plan_deleted_index_sql=IF(@plan_deleted_index_exists=0,'ALTER TABLE membership_plans ADD KEY idx_plan_deleted_sort (deleted_at,sort_order)','SELECT 1'); PREPARE plan_deleted_index_stmt FROM @plan_deleted_index_sql; EXECUTE plan_deleted_index_stmt; DEALLOCATE PREPARE plan_deleted_index_stmt; SET @order_deleted_index_exists=(SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='orders' AND INDEX_NAME='idx_order_deleted_created'); SET @order_deleted_index_sql=IF(@order_deleted_index_exists=0,'ALTER TABLE orders ADD KEY idx_order_deleted_created (deleted_at,created_at)','SELECT 1'); PREPARE order_deleted_index_stmt FROM @order_deleted_index_sql; EXECUTE order_deleted_index_stmt; DEALLOCATE PREPARE order_deleted_index_stmt;