+ -
当前位置:首页 → 问答吧 → 想請問是否可以解決程式互相呼叫同一支SP(會寫到同一個Table)的方法

想請問是否可以解決程式互相呼叫同一支SP(會寫到同一個Table)的方法

时间:2010-08-26

来源:互联网

有没有方法可以避免掉程式Fail的方法??

因为使用VB在呼叫SP的时候,会写到Table内,但只要有其它程式先使用到同一个Table时,我的VB就会Fail掉,因为都要Insert到同一个Table内,被先呼叫到的程式先Lock住了。

 

所以想问sql DB有没有方法或机制,可以让后面的Task先Wait住(可能在Queue),待使用到同一个Table的Task执行完后,可以在叫起在Queue中的Task来执行??



Best Regards

作者: JenDick   发布时间: 2010-08-26

把资料丢到 spooler , 再另外用"一支程式"从 spooler 更新到真正的 record , 由单一程式处理单一功能就不会被 lock .

作者: slime   发布时间: 2010-08-26

感谢slime
很抱歉,这么晚才回应
想在请问一下,你所说的spooler是指哪部份??

因为没办法确定另外支程式的执行时间,所以会随机的遇到两支同时执行,所以如果先存入Spooler,另一支在更新,那不会遇到一样的问题吗??

Thanks & Best Regards

作者: JenDick   发布时间: 2010-08-29

引用自: JenDick 於 2010-08-29 23:58
想在请问一下,你所说的spooler是指哪部份??
因为没办法确定另外支程式的执行时间,所以会随机的遇到两支同时执行,所以如果先存入Spooler,另一支在更新,那不会遇到一样的问题吗??

写三支程式:
1. Common : 负责更新资料库
2. 程式 A
3. 程式 B
程式 A 只负责把前端的值记下来, 呼叫 Common ; 程式 B 也是如此.
而 Common 程式负责依程式先后顺序, 将资料写入 DB ; 并判断是否有其他 Common .

如此一来真正有写入的只有 Common , 也就大大降低两支程式同时写入的问题.
而且 Common 也可以有不同的优先顺序观念, 弹性比较大.

另外的方式是在写入前先进行一些检查, 如果有其他程式在进行, 就暂停,
但是这样还是很容易在 AP 端 Lock , 所以比较不建议.


作者: slime   发布时间: 2010-09-02