我写了一个存储过程,我在开头写了这些语句:
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-READ
,show create table table2
在结果结束时给了我engine = InnoDB
答案 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的帮助。我没想过隔离级别。