0

以下の MYSQL のストアド プロシージャでは、データの切り捨てによる警告が発生するたびに、警告が表示されます。しかし、ROLLBACK は何もしません。WARNING の EXIT ハンドラは完全に無視されています。助けてください。

DELIMITER $$

DROP PROCEDURE IF EXISTS `saveDetails` $$
CREATE DEFINER=`dbuser`@`%` PROCEDURE `saveDetails`(IN param_name VARCHAR(200))
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
    DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
    START TRANSACTION;
        UPDATE userDetails SET displaystatus = 2 where displaystatus = 1;
        UPDATE userDetails SET displaystatus = 1 where displaystatus = 0;
        UPDATE userDetails SET name = param_name;
    COMMIT;

END $$

DELIMITER ;

以下のバージョンも試しましたが、これも機能しません。

区切り記号 $$

DROP PROCEDURE IF EXISTS `saveDetails` $$
CREATE DEFINER=`dbuser`@`%` PROCEDURE `saveDetails`(IN param_name VARCHAR(200))
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING  
    BEGIN 
        ROLLBACK;
    END;
    START TRANSACTION;
        UPDATE userDetails SET displaystatus = 2 where displaystatus = 1;
        UPDATE userDetails SET displaystatus = 1 where displaystatus = 0;
        UPDATE userDetails SET name = param_name;
    COMMIT;

END $$

DELIMITER ;
4

1 に答える 1