3 回答
TA贡献1797条经验 获得超6个赞
好吧,根据php doc,您是对的。
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TABLE Language LIKE CountryLanguage");
/* set autocommit to off */
$mysqli->autocommit(FALSE);
/* Insert some values */
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");
/* commit transaction */
$mysqli->commit();
/* drop table */
$mysqli->query("DROP TABLE Language");
/* close connection */
$mysqli->close();
?>
在上面的示例中:
的CREATE TABLE是自动提交,因为它是默认的行为。
在INSERT INTO 没有自动致力于因为autocommit(FALSE)。
的DROP TABLE是自动提交,因为autocommit(FALSE)被重置通过->commit();。
TA贡献1966条经验 获得超4个赞
j0k主要是正确的,除了在放置表中。
没有使用-> commit()打开自动提交
相反,DROP TABLE是DDL查询,并且DDL查询始终是隐式提交的,并且将提交所有以前未提交的工作。
因此,如果您未提交工作,则DDL查询将强制执行此提交。
添加回答
举报