如何在SQL中锁定一组项?

时间:2011-01-01 02:30:08

标签: sql locking

我基本上不熟悉SQL,而且锁定很混乱。

我现在困惑的案例涉及如何处理由一组记录描述的项目的编辑/更新。在回写更改时,可能会有比原始更多或更少的记录。

(另外,如果对SQL锁定有任何好的参考,我想知道它。我还没有找到任何东西。)

回复:评论:

我目前正在使用SQL Server,但我希望尽量减少对特定数据库的依赖。

我了解交易,但我不知道如何在这种情况下应用它们,因为在此过程中可能会创建或删除记录。

我是否只是在保存期间锁定父项而不担心组成它的记录?

3 个答案:

答案 0 :(得分:2)

您不太可能需要担心手动管理数据库锁定。也许你可以多说一些你想要做的事 - 可能还有一些代码 - 我们可以指出你正确的方向。如果您需要此类帮助,请告诉我们您正在使用的数据库。

如果你只是想找一个开始阅读的地方,我推荐一本或所有这些书:

  • 对于凡人的SQL查询(http://www.amazon.com/dp/0321444434/)
  • Mere Mortals的数据库设计(http://www.amazon.com/dp/0201752840/)<< li>
  • 学习SQL(http://www.amazon.com/dp/0596520832/)
  • SQL Cookbook(http://www.amazon.com/dp/0596009763/)

还有很多很好的在线资源,一旦我理解了你真正需要的东西,我就可以指点你。 FWIW,我提醒SQL初学者不要使用Google搜索来回答他们的SQL和数据库设计问题 - 出于同样的原因,我提醒我不要使用Google来对可能的医疗问题进行自我诊断;你可能会从这次经历中吸取教训,但你几乎肯定也会被许多不必要的小巷所困扰。

祝你好运!

答案 1 :(得分:1)

确保关闭自动提交并使用select for update。语法是db specific.Here是一个例子:

select * from emp where id = 2 for update

答案 2 :(得分:1)

你的问题并不是100%清楚你要做什么。

如果您需要将信息写入多个表格,请使用交易。

更新一个表中的一组记录可以写成单个UPDATE语句,这是原子的。