Sql server SQL Azure是否缓存刚刚创建的行?
我有一个存储过程,它插入一行,如下所示:Sql server SQL Azure是否缓存刚刚创建的行?,sql-server,azure-sql-database,Sql Server,Azure Sql Database,我有一个存储过程,它插入一行,如下所示: CREATE PROCEDURE dbo.sp_add_test @CreatedBy NVARCHAR (128), @TestId INT AS BEGIN SET NOCOUNT ON INSERT INTO dbo.Test ( CreatedDate, Title, ParentTestId, )
CREATE PROCEDURE dbo.sp_add_test
@CreatedBy NVARCHAR (128),
@TestId INT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO dbo.Test (
CreatedDate,
Title,
ParentTestId,
)
SELECT
@CreatedDate
Title,
@TestId
FROM Test
WHERE TestId = @TestId;
SELECT * from Test
WHERE TestId = @TestId
AND CreatedDate = @CreatedDate;
END
插入时,将为主键生成一个新的标识值。一旦插入完成,我就从该表中进行选择
有人能告诉我有没有别的办法?我进行第二次选择的原因是我需要为新TestId获取一个值,它是一个标识列
我不熟悉SQL Server缓存数据的方式。它是否以与Oracle相同的方式缓存最近使用的行,还是将转到磁盘以获取刚刚插入的行?在SQL Server中,正确的方法是使用
输出
子句。文件是
据我所知,SQLAzure支持OUTPUT
子句
至于您的问题,当数据库提交为页面时(即,
insert
完成时),页面通常保留在内存中。通常,“提交”是一个日志操作,因此数据页保留在内存中。立即访问页面应该是快速的,因为它不需要磁盘访问。但是在SQL Server中,OUTPUT
子句是正确的方法。谢谢。我将研究如何使用这个。实际上,我注意到我的SP似乎没有输出任何东西。我想知道这是否是因为插入和选择之间没有提交。