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 скрипт для неверной версии базы.