Trigger para actualizar registro mysqli php

publicado por: user48203

Hola soy nuevo con los trigger y tengo un problema. Tengo una tabla con 2 campos |cantidad |criterio | y necesito que al momento de actualizar la cantidad el trigger actualice el criterio: ejemplo si actualizo la cantidad a > 0 entonces que criterio se actualice a Ganó, si cantidad = 0 entonces criterio que actualice a Perdió y si cantidad es vacío entonces criterio pase a pendiente.

_x000D_

_x000D_

<?php_x000D_
$id_mercado = $_POST['id_mercado'];_x000D_
$cantidad = $_POST['cantidad'];_x000D_
$criterio = $_POST['criterio'];_x000D_
_x000D_
$sql = $mysqli->query("UPDATE mercado SET cantidad='$cantidad',  criterio='$criterio' WHERE id_mercado=$id_mercado");_x000D_
?>	

_x000D_

_x000D_

_x000D_

el trigger que tengo es este

_x000D_

_x000D_

CREATE TRIGGER estado_update BEFORE UPDATE ON mercado FOR EACH ROW BEGIN if new.cantidad > 0 then update mercado SET criterio = 'Ganó'; end if; END;    

_x000D_

_x000D_

_x000D_

No he podido con el if anidado y no se como extructurar bien el código, el trigger lo cree en phpmyadmin, alguien me puede orientar.

solución

Hola para su caso debe de hacer el trigger de la siguiente manera.

_x000D_

_x000D_

DELIMITER //_x000D_
CREATE TRIGGER estado_update BEFORE UPDATE ON mercado FOR EACH ROW_x000D_
BEGIN_x000D_
    IF (NEW.cantidad>0) THEN _x000D_
	SET NEW.criterio = 'Ganó'; _x000D_
    END IF;_x000D_
    IF (NEW.cantidad=0) THEN_x000D_
        SET NEW.criterio = 'Perdió';_x000D_
    END IF;_x000D_
    	IF (NEW.cantidad ='') THEN _x000D_
        SET NEW.criterio = 'Pendiente'; _x000D_
    END IF;_x000D_
END;//_x000D_
DELIMITER ;

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *