1、好代码一定不会冲突,SQL自己会根据顺序进行处理。
2、读取时用优化锁,更新时若不止更新多次数据,用事务;
3、事务简而言之就是多件事变成一件事,要么一起OK,要么一起失败。
For example:
Read:
ret.Open "select * from stockout where serialId=''", myCns, adOpenDynamic, adLockOptimistic
Update: Mycns.BeginTrans
mycns.execute "update ***"
Mycns.execute "Delte ***"
Mycns.Committrans
2、读取时用优化锁,更新时若不止更新多次数据,用事务;
3、事务简而言之就是多件事变成一件事,要么一起OK,要么一起失败。
For example:
Read:
ret.Open "select * from stockout where serialId=''", myCns, adOpenDynamic, adLockOptimistic
Update: Mycns.BeginTrans
mycns.execute "update ***"
Mycns.execute "Delte ***"
Mycns.Committrans
2.在Client端你的要求要靠使用适当的锁来保障不出现“更新异常”,具体锁类型请查阅MSDN。如在VB ADO中:
adLockReadOnly (默认值)只读 — 不能改变数据。
adLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,
通常通过在编辑时立即锁定数据源的记录来完成。
adLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用 Update
方法时才锁定记录。
adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。
当然会,会有LOCK的冲突,只是看你如何来处理这些“冲突”,每次操作都是对资源的占用,SQLSERVER会管理这些资源(根据你的配置),你所要做的就是如何配置来保证数据的完整性和性能的优化这对矛盾。