set exclusive指令是全局指令,从发出这条指令开始以后全局生效。exclusive是“排他”的意思,即不允许与人共享,等于独占。因此如果指令on,就是启动独占模式,指示vfp以后凡是打开数据库,均独占,若是off,即是取消独占,可以共享。set exclusive指令的默认值,在vfp的option中可以设置,但一般在程序的启动代码中自己显式设定,不要依靠vfp环境的默认。
在程序运行过程中凡是打开数据库,若没有自己使用use语句打开,比如SQL指令那种自动打开数据库的举动,就会使用全局set exclusive值。不过,如果SQL发现需要使用的数据库已经被打开,就不会重新打开,直接使用现成的,这个时候,就不理会set exclusive设置状态了。
因此,当使用SQL这类具有自动打开数据库机制的指令时,可以不用use语句,但若不是这类机制的指令,则必须使用use打开数据库。所以,你这种情况是不必要再use的,但使用SQL之后要自己收拾它打开的数据库和临时表、视图,它屙屎,你擦屁股,有时擦不干净,后面有古怪的现象,就很难排查了。
谨慎的编程,是自己使用use带exclusive或share参数打开所有用到的数据库、自己关闭,不依赖“未知”、“可能”。诸如SQL Select等生成了视图,也必须要自己select工作区和use关闭掉的,最好熟悉它们到底干了些什么,否则大量使用SQL,内存中充斥废弃未用的视图,浪费资源事小,影响数据事大。
[
本帖最后由 TonyDeng 于 2012-5-15 13:04 编辑 ]