mysql中的事务回滚

ctehm74n  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(254)

我需要一个回滚的帮助。我需要在表中插入 CATEGORIA 只有当我插入 CATEGORIA_IDIOMA . 所以我尝试了一个事务,但它不起作用,我有一个唯一的约束 CATEGORIA_IDIOMA for(id\u idioma,nombre\u categoria)。我的存储过程的代码是:

  1. DELIMITER //
  2. CREATE PROCEDURE sp_ingresar_categoria
  3. (
  4. IN AV_CATEGORIA_NOMBRE VARCHAR(255),
  5. IN AI_ID_IDIOMA INT
  6. )
  7. BEGIN
  8. DECLARE EXIT handler for sqlexception
  9. BEGIN
  10. SELECT 'EXISTE UN ERROR, NO SE PUDO INGRESAR LA CATEGORIA'
  11. ROLLBACK;
  12. END;
  13. START TRANSACTION;
  14. INSERT INTO `CATEGORIA`(`activo`)
  15. VALUES (1);
  16. SELECT MAX(`id_categoria`) INTO @LI_CATEGORIA from `CATEGORIA`;
  17. INSERT INTO `CATEGORIA_IDIOMA`(`id_categoria`, `id_idioma`, `categoria_nombre`)
  18. VALUES(@LI_CATEGORIA, AI_ID_IDIOMA, AV_CATEGORIA_NOMBRE);
  19. commit;
  20. END //

当我用一个新值尝试它时,它工作得很好,但是当我用一个重复的值尝试它时,它不会插入到 CATEGORIA_IDIOMA ,但它插入 CATEGORIA .
有人能解释一下它是怎么工作的吗?或者我的错误在哪里。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题