RPK*_*RPK 6 mysql oracle sql-server sql-server-2005
我写了一个存储过程来插入一条记录。我在插入查询的正上方添加了“开始事务”并执行查询。我注意到另一个应用程序显示一个网页,其中包含来自同一个表的记录,在插入完成时挂起。
为什么开始事务会锁定整个表?作家不应该阻止读者。默认情况下它应该是ON。
我正在使用 SQL-Server 2005 Express。我也想知道 Oracle 和 MySQL 如何处理相同的情况。
Begin Transaction 是事务的开始 - 在结束事务之前不能将其他数据写入表中,这是设计使然,以便在数据库上强制执行 ACID 标准。http://en.wikipedia.org/wiki/ACID
如果您需要像单个原子操作一样执行多个查询,则可以使用事务。如果不需要原子性,就不要使用事务!
不过,这是非常非常基本的东西 - 在尝试编写数据库代码之前,您可能需要重新了解基本的数据库理论,如果您不熟悉事务等核心原理,则可能会对应用程序造成严重损害。