[英]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-READ
並show 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.