簡體   English   中英

MySQL事務在存儲過程中不起作用

[英]Mysql transaction not working in stored procedure

我編寫了一個存儲過程,並將這些語句放在開頭:

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

我有一個Ihm,它顯示表TABLE2的數據。 我注意到當存儲過程運行時,IHM顯示空值。 這意味着提交是在第二個DELETE之后和INSERT之前進行的

更新3

select @@tx_isolation; 給我REPEATABLE-READshow create table table2在結果末尾給我engine = InnoDB

問題是在我的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。 我沒有考慮隔離級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM