日期:2014-05-16  浏览次数:20582 次

问一个关于数据库的并发问问题。。关于触发器的问题。。。并发事务就是死锁。。死锁就会报错。。不科学。。。
写个触发器。来维护数据完整性,主要就是这样,
当A表写入一条数据的时候,先统计B表的type字段符合要求的行数,当大于200条,就是禁止写入。
多人同时访问,如何防止并发。。

就比如,当A君,想在A表添加一条数据,当触发器刚检查完 Btype=2的总行数还差一条,可以写入的时候。
B君,就刚好又写入一条数据。那A君再写入,那数据完整性就没法做了啊。。
------解决方案--------------------
还有你多去了解一些什么是死锁,什么是阻塞,SQL Server如何保证数据完整性。
------解决方案--------------------
这个可以考虑用触发器,但是最好是新增一张表。

存储记录条数,比如现在是199条。

那么你的触发器中,必须要先锁住这条记录,可以用updlock更新锁,也就是取出记录数是199,如果没超过200,那么就可以进行你的操作了,

如果超过200,直接rollback。