簡體   English   中英

mysql_query是否提交所有內容

[英]Does mysql_query commit everything

我在php中使用mysql擴展,我知道從PHP 5.5.0起它已被棄用,但是我已經使用該擴展編寫了很多代碼。 在我看來,mysql_query提交了查詢,如果是這樣,則意味着它被設置為自動提交,如何設置以便不自動提交。

舊的mysql擴展沒有專門用於事務控制的功能,但是您可以發出SQL語句來執行所需的操作。

您只需啟動一個事務就可以隱式關閉一個事務期間的自動提交:

mysql_query("START TRANSACTION");

一旦您提交或回滾,自動提交模式將恢復為默認值。

mysql_query("COMMIT"); // or ROLLBACK

您可以通過設置會話變量來關閉整個會話的自動提交:

mysql_query("SET autocommit=0");

或者在您的MySQL實例上全局更改它,以便它更改所有會話的默認值:

mysql_query("SET GLOBAL autocommit=0");

或通過編輯/etc/my.cnf將其設置為在MySQL服務啟動時更改全局設置:

[mysqld]
autocommit=0

如果您使用MySQL 5.1,則必須稍有不同:

[mysqld]
init_connect='SET autocommit=0'

您可能已經知道,但是需要重復的一點是,如果使用InnoDB表,則事務僅意味着任何意義。 MyISAM表不支持事務,因此無論您如何設置,它們始終自動提交。 與其他幾個存儲引擎(包括MEMORY和CSV)相同。

暫無
暫無

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

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