表A
字段
ID NAME CREATTIAME UPDATETIME
有多个管理员
假设有两个管理员在同时操作一条记录
当一个管理员操作该记录后
另一个管理员再操作该记录时会提示不能操作
就时两个管理员在操作该记录时取得了同一个UPDATETIME
当UPDATE该记录时
会比较现在该记录的UPDATIME
如果和开始取得的不同
则不能UPDATE
这样当一个管理员先UPDATE了该记录
那另一个管理员再UPDATE时UPDATETIME就和他开始时候取得的不同
求一触发器实现

解决方案 »

  1.   

    不需要这么复杂吧,update本来就会产生锁的
      

  2.   

    楼上的说得没错~
    我给你补充和解释一下~"锁"可以防止在同时访问相同资源的用户之间出现破坏性的交互操作"锁"分为"行级锁"和"表级锁"
    当一个用户进行insert,update,select...for update等时候自动获得"行级锁"
    当用户进行提交(commit)或者回退(rollback)等操作的时候,"锁"将被释放"表级锁"又分为"共享锁","公象更新锁","排他锁"等"共享锁":只允许其他用户进行查询操作,并且多用户可以在同一张上面加上此锁
        加锁方法:lock table <表名> in share mode;
    "共享更新锁":允许其他用户同时查询,插入和更新未被锁定的行
        加锁方法:lock table <表名> in share update mode;
    "排他锁":只允许其他用户进行查询操作,同一时间只允许一个用户在表上加此锁
        加锁方法:lock table <表名> in exclusive mode;理解了以上含义,相信你就明白了.
    在一个用户更新表的时候ORACLE会自动给表上加上行级锁,
    其他用户在此用户提交或者回退操作以前是不能操作此表的~
    所以也就不必要去专门创建触发器去防止多用户的更新操作了!
    前几天上课学到的,希望对你有帮助.
    ^^