设想:
use databaseA;
go
exec databaseB.dbo.spProcedure();
go
该过程是针对 databaseA(调用它的上下文)还是针对 databaseB(它存在的上下文)执行的?
如果程序有
insert into myTable(example) values ('example');
... 如果两个数据库都有相同的表 myTable,哪个数据库将接收新记录?
设想:
use databaseA;
go
exec databaseB.dbo.spProcedure();
go
该过程是针对 databaseA(调用它的上下文)还是针对 databaseB(它存在的上下文)执行的?
如果程序有
insert into myTable(example) values ('example');
... 如果两个数据库都有相同的表 myTable,哪个数据库将接收新记录?
它在对象所在的数据库的上下文中执行。示例代码:
这突出表明,即使我们查询存在于两个数据库中的“dbo.Data1”,返回的值来自 Temp2 数据库中的该表,因为这是存储过程的上下文。
该示例是 SELECT,但同样适用于 INSERT。