mysql中事务的数据库创建过程

lawou6xi  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(369)

我真的需要帮助,mysql是相当新的。您需要编写一个事务,检查如果插入数据,密码长度是否为4个字符,然后事务回滚,否则条目将插入表中。为了实现,我们使用了

` CREATE PROCEDURE PROC (@id int (11), @log 
                         varchar (45), @em 
                      varchar (45),
                      @pass int (45),@st int (11));
                      AS
                      BEGIN
                      BEGIN 
                      START TRANSACTION;
                      INSERT INTO user 
               (`id_User`,`login`,`email`,`password`,`status`) 
                VALUES(@id, @log, @em, @pass, @st); 
              COMMIT
              END 
              BEGIN 
              IF (length(@pass) < 4)
                BEGIN
                 ROLLBACK
                      END
                       END 
                       END`
ego6inou

ego6inou1#

对于您想做的事情,您根本不需要事务。您发布的代码在回滚之前已经提交,所以即使密码少于4个字符,仍然会发生长插入,并且不会有任何事务要回滚。除此之外,您使用变量的方式是错误的。然而,如果这是您验证用户输入的方式,而不仅仅是向数据库添加任何条目,那么这是一种糟糕的做法。您应该确保不能从表单提交长度小于4个字符的密码。
请看下面:

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc`(
    v_id int (11), 
    v_log varchar (45), 
    v_em varchar (45),
    v_pass int (45),
    V_st int (11)
)
BEGIN
    IF(LENGTH(v_pass) >= 4) THEN
        INSERT INTO user (`id_User`,`login`,`email`,`password`,`status`) 
        VALUES(v_id,v_log, v_em, v_pass, V_st);
    END IF;
END

希望这有帮助。

相关问题