| 代码如下 | 复制代码 |
SELECT @findCount=COUNT(id) FROM MyTable WHERE [fk_related_id]=@Argument IF (@findCount > 0) BEGIN ROLLBACK TRANSACTION RETURN ERROR_CODE END INSERT INTO MyTable ([fk_related_id],…) VALUES (@Argument,…) COMMIT TRANSACTION RETURN SUCCESS_CODE |
|
| 锁类型 | 描述 |
| (Shared Lock) | 用于只读操作数据锁定 |
| (Update Lock) | 用于数据的更新,在数据真正的需要更新的时候会申请升级为X锁。 |
| X(Exclusive Lock) | 独占锁,用于数据的更改。 |
| Key-Range Lock(稍后讨论) | 仅仅在 Serializable 隔离级别保护数据,以避免任何有可能使得本事务第二次读取信息产生错误的数据插入操作 |
| 隔离级别 | 读数据锁状态 | 写数据锁状态 | 锁持有时间 |
| Read Uncommitted | 不获得任何锁 | 不获得任何锁 | |
| Read Committed | 数据获得S锁 | 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁; | 读完即释放,并不持有至事务结束。 |
| Repeatable Read | 数据获得S锁 | 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁; | 持有至事务结束 |
| Serializable | 数据获得S锁,同时获得Key-Range锁。 | 对于 INSERT、DELETE、UPDATE的执行,获得X锁;对于UPDATE的标记,获得U锁,同时获得Key-Range锁。 | 持有至事务结束 |
| 脏读 | 更新丢失 | 不可重复读 | 幻读 | |
| Read Uncommitted | 可能 | 可能 | 可能 | 可能 |
| Read Committed | 不可能 | 可能 | 可能 | 可能 |
| Repeatable Read | 不可能 | 不可能 | 不可能 | 可能 |
| Serializable | 不可能 | 不可能 | 不可能 | 不可能 |
疯狂医院达什医生中文版(Crazy Hospital)
疯狂医院达什医生最新版是一款医院模拟经营类游戏,逼真的场景画
宝宝庄园官方版
宝宝庄园官方版是一款超级经典好玩的模拟经营类型的手游,这个游
桃源记官方正版
桃源记是一款休闲娱乐类的水墨手绘风格打造的模拟经营手游。玩家
长途巴士模拟器手机版
长途巴士模拟器汉化版是一款十分比真好玩的大巴车模拟驾驶运营类
房东模拟器最新版2024
房东模拟器中文版是一个超级有趣的模拟经营类型的手游,这个游戏