DELIMITER $$ DROP FUNCTION IF EXISTS sfKillConnection $$ CREATE FUNCTION sfKillConnection() RETURNS INT BEGIN SELECT connection_id() into @connectionId; KILL @connectionId; RETURN @connectionId; END $$ DELIMITER ;
Затем можно делать запрос
select if( (SELECT 1>2), 'ok', sfKillConnection() );
В данном примере этот запрос всегда будет закрывать соединение.
Где это может понадобиться? Например, в update скриптах для базы.
SET @VersionToUpdate = 10; select if( (SELECT getCurrentVersion() = @VersionToUpdate), 'ok', sfKillConnection() ); DROP table my_table;
Если getCurrentVersion() не равно 10, то все запросы, которые идут после условия выполнены не будут, тем самым не получится применить update скрипт для неверной версии базы.