Mysql事务在存储过程中不起作用

时间:2016-11-24 11:14:19

标签: mysql transactions

我写了一个存储过程,我在开头写了这些语句:

SET autocommit = 0;

START TRANSACTION READ WRITE;

我以COMMIT;声明结束。

但交易无效。

你能帮忙吗?

更新1:

这条指令可以吗

 SET @now = unix_timestamp () * 1000;

导致隐式提交?

更新2:我的代码就像这样

CREATE PROCEDURE stored_proc()

SQL SECURITY DEFINER

BEGIN

SET autocommit = 0;

START TRANSACTION;

DELETE FROM `TABLE1` WHERE `COLUMN1` = value;

INSERT INTO TABLE1...

SET @now = unix_timestamp() * 1000;

DELETE FROM TABLE2 WHERE COLUMN2 = value;

INSERT INTO `TABLE2` ...;

COMMIT;

END

我有一个显示表TABLE2数据的ihm。我注意到,当存储过程运行时,IHM显示空值。这意味着提交是在第二个DELETE之后和INSERT

之前进行的

更新3

select @@tx_isolation;给了我REPEATABLE-READshow create table table2在结果结束时给了我engine = InnoDB

1 个答案:

答案 0 :(得分:0)

问题是在我的java代码中,我有

<Resource username="$user" url="$url" type="javax.sql.DataSource" password="$pwd" name="$jndi" maxWait="-1" maxIdle="$idle" maxActive="$max" driverClassName="com.mysql.jdbc.Driver" defaultTransactionIsolation="READ-UNCOMMITTED" /> 

我使用defaultTransactionIsolation =“REPEATABLE_READ”进行了更新非常感谢@Solarflare的帮助。我没想过隔离级别。