Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库原子操作的实现_Database_Database Design - Fatal编程技术网

Database 数据库原子操作的实现

Database 数据库原子操作的实现,database,database-design,Database,Database Design,问题在于没有包装在“begin commit”块中的查询,而是关于postgres、mysql(至少是innodb引擎)中原子的简单插入和更新。那么这是如何在内部实现的呢?所有DML语句都在事务的上下文中运行——无论是显式事务(BEGIN…COMMIT)还是隐式事务。我很确定这对所有SQL dbms都是正确的。当然是 默认情况下(不带BEGIN),PostgreSQL在中执行事务 “自动提交”模式,即每个语句都以其自己的方式执行 事务和提交在事务结束时隐式执行 语句(如果执行成功,则执行回滚)

问题在于没有包装在“begin commit”块中的查询,而是关于postgres、mysql(至少是innodb引擎)中原子的简单插入和更新。那么这是如何在内部实现的呢?

所有DML语句都在事务的上下文中运行——无论是显式事务(BEGIN…COMMIT)还是隐式事务。我很确定这对所有SQL dbms都是正确的。当然是

默认情况下(不带BEGIN),PostgreSQL在中执行事务 “自动提交”模式,即每个语句都以其自己的方式执行 事务和提交在事务结束时隐式执行 语句(如果执行成功,则执行回滚)


所有DML语句都在事务上下文中运行——显式事务(BEGIN…COMMIT)或隐式事务。我很确定这对所有SQL dbms都是正确的。当然是

默认情况下(不带BEGIN),PostgreSQL在中执行事务 “自动提交”模式,即每个语句都以其自己的方式执行 事务和提交在事务结束时隐式执行 语句(如果执行成功,则执行回滚)


“普通”插入和更新在隐式事务上下文中运行(隐式BEGIN…COMMIT块)。这真的没什么区别。我想你应该把它写下来作为一个答案,而不是注释——它将被接受。我把它写下来作为一个答案,并链接到文档。“普通”插入和更新在隐式事务(隐式的开始…提交块)的上下文中运行。这真的没什么区别。我想你应该把它写下来作为一个答案,而不是评论——它会被接受。我把它写下来作为一个答案,并链接到文档。顺便问一下,如果自动提交模式被关闭了怎么办?是否有任何语句包含在begin。。。提交?您不能真正关闭它,除非在嵌入式SQL中。(嵌入式SQL的默认设置为关闭。)BEGIN具有关闭它的效果;PostgreSQL将等待提交或回滚。嗯,我可以在mysql的设置中做这件事——我真的不能在postgres中做同样的事情吗?关于mysql的问题是:如果autocommit设置为0怎么办?在PostgreSQL中不能采用相同的方法。如果
将自动提交设置为off
,则会出现“错误:不再支持将自动提交设置为off”。在PostgreSQL中,可以通过使用BEGIN或START TRANSACTION“关闭自动提交”。在MySQL中,如果关闭了自动提交,任何SQL DML都会隐式启动一个事务,您必须提交或回滚才能完成它。顺便问一下,如果关闭了自动提交模式怎么办?是否有任何语句包含在begin。。。提交?您不能真正关闭它,除非在嵌入式SQL中。(嵌入式SQL的默认设置为关闭。)BEGIN具有关闭它的效果;PostgreSQL将等待提交或回滚。嗯,我可以在mysql的设置中做这件事——我真的不能在postgres中做同样的事情吗?关于mysql的问题是:如果autocommit设置为0怎么办?在PostgreSQL中不能采用相同的方法。如果
将自动提交设置为off
,则会出现“错误:不再支持将自动提交设置为off”。在PostgreSQL中,可以通过使用BEGIN或START TRANSACTION“关闭自动提交”。在MySQL中,如果autocommit关闭,任何sqldml都会隐式启动一个事务,您必须提交或回滚才能完成它。