$ wpdb e MySQL Create Trigger

4

Os métodos de $wpdb não aceitam uma consulta de CREATE TRIGGER do MySQL? Eu tentei com $wpdb->query( $sql_trigger ) de novo e de novo sem sucesso. Ao lançar a consulta create-trigger no phpMyAdmin, o gatilho é criado, então a consulta parece estar bem.

$sql_trigger = "DELIMITER //
                CREATE TRIGGER triggerName
                BEFORE UPDATE
                ON 'table_name'
                FOR EACH ROW
                BEGIN
                    IF NEW.amount < 0 THEN
                        SET NEW.amount = 0;
                    ELSEIF NEW.amount > 100 THEN
                        SET NEW.amount = 100;
                    END IF;
                END; //
                DELIMITER ;
                ";

Acabei de ler o EddyR usando o mysqli para criar o trigger dele. enlace

Não há como usar as 'funções nativas' do WP para criar um gatilho do mysql ou estou fazendo algo errado?

editar: Separar as configurações de DELIMITER e a consulta como essa (ou até mesmo alterar o DELIMITER de // para $$ ) não alterou nada. ainda o mesmo problema.

$sql_before_trigger = "DELIMITER $$";
$sql_after_trigger = "DELIMITER ;";

$wpdb->query( $sql_before_trigger );
$wpdb->query( $sql_trigger );
$wpdb->query( $sql_after_trigger );
    
por chabi 22.12.2013 / 15:58

1 resposta

4

Na pergunta à qual você se vinculou, a solução foi usar mysqli_multi_query como a API para executar o SQL. $ wpdb não tem uma API para fazer uma consulta múltipla por isso você não pode usá-lo diretamente, mas você pode pegar o identificador para a interface mysql de $wpdb->dbh e fazer algo como

$sql_trigger = "....";
mysqli_multi_query($wpdb->dbh,$sql_trigger);
    
por Mark Kaplun 22.12.2013 / 17:14

Tags