⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2421.html

📁 VB技巧问答10000例 VB技巧问答10000例
💻 HTML
字号:
<html>
  <head>
    <title>有关锁定 (长文章)</title>
  </head>
  <BODY BACKGROUND="" BGCOLOR="white" TEXT="black" LINK="red" VLINK="#808080" ALINK="">
    <center>
      <h1>有关锁定 (长文章)</h1>
    </center>

<HR><p>
Posted by <a href="mailto:yfwu@iname.com">小吴</a> on March 27, 1998 at 07:44:31:<p>
In Reply to: <a href="2413.html"><b>Re: 请说明清楚</b></a> posted by 普罗米修斯 on March 27, 1998 at 04:20:43:<p>
只要你会存取到资料库就会用到锁定。<br>锁定可分 shared lock, row lock, page lock, table lock 等等。<br>一般情况下当你读取资料库的时候是 shared lock,也可以说是没有 lock 啦!<br>当你要新增/修改资料时有可能会是 row lock 或 page lock。<br>如果一次修改太多资料而且散落在资料库多处,资料库会自动转换为 table lock。<br>基本上上面的各种 lock,除非你是使用大型 SQL Server 例如 MS SQL 6/7, Oracle...,否则都是资料库帮你决定,例如 Access 就是这样。<p>至于你要注意的就是编辑时候的 lock 了。有乐观锁定和悲观锁定两种。<br>编辑资料库中的资料没什么好大不了的,但是如果在多人使用的环境下,两个用户同时修改到同一笔资料怎么办?这时你的程式就必须对这种情况做处理。你可以选择乐观或悲观两种锁定方式。要注意!这两个方式所写出来的程式是不同的!!因此要在写程式前便要仔细考量。<p>所谓悲观锁定的意思是:我很悲观地认为当我在修改资料的时候,别人很有可能也来编辑同一笔资料。这时我在下 .Edit 这个方法时就把该笔资料或该页给锁住,一直要到我 .Update 才释放。在这段期间若别人来改同一笔资料的话,在下 .Edit 方法时便会发生错误。<br>悲观锁定的程式比较好写,也较易懂,但是注意大部分的资料库是采用 page lock,也就是你编修一笔,但是锁定的却是该笔资料附近的数笔资料,如果你的资料库使用的人数一多,page lock 相对会多,这时系统会自动转为 table lock,这时后来的用户要修改便不行了 (虽然他要修改的资料事实上没人修改到)。因此悲观锁定在用户一多的情况下效率会降低。<p>至于乐观锁定就是:我很乐观地认为当我在修改资料的时候,别人不会来编辑同一笔资料。因此当我修改资料的时候,我并不锁定该笔资料,但是当我下 .Update 方法的时候,如果该笔资料在我编辑的期间被别人修改了,我便会发生错误。<p>要注意喔!对同一笔资料而言,悲观锁定是先下 .Edit 的人先赢,后下的的人触发错误。而乐观锁定则是先下 .Update 方法的人先赢,后下 .Update 的人则触发错误。<p>在实际例子中,除了乐观及悲观锁定要注意之外。你还要注意一种状况:<br>就是我们通常是先把资料从资料库读出来之后,显示在画面上让使用者修改,使用者改完之后再一次存回资料库。使用者在画面上修改资料的时候是没有资料库锁定的 (虽然你也可以这么做,但是强烈不建议这么做),万一其他使用者改了同一笔资料时,你是要直接盖过去还是发生错误呢?这点你也要加以考虑。<p>这可是我开板以来写过最长的一篇回答。你可千万要看懂呀!<br>
<br>
<p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 2421-->
<!--top: 2422--><li><a href="2422.html"><b>Re: 有关锁定 (长文章)</b></a> 普罗米修斯 <i>09:28:25 3/27/98</i>
(<!--responses: 2422-->0)
<ul><!--insert: 2422-->
</ul><!--end: 2422-->
</ul><!--end: 2421-->
<br><HR><p>

</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -