小编Dmi*_*nko的帖子

具有内存优化表的 SQL Server 2016 的不正确行为

请查看以下 SQL 查询:

CREATE TYPE dbo.IN_MEMORY_TABLE_TYPE AS TABLE
(
  source_col INT NULL,
  target_col INT not NULL
  INDEX ix_InMemoryTable NONCLUSTERED (target_col)
)
WITH (MEMORY_OPTIMIZED = ON)
GO

DECLARE
  @t dbo.IN_MEMORY_TABLE_TYPE

INSERT @t
(
  source_col,
  target_col
)
VALUES
  (10, 0),
  (0, 0)

UPDATE r1
SET
  target_col = -1
FROM @t r1
WHERE EXISTS
      (
        SELECT *
        FROM @t r2
        WHERE r2.source_col > 0
      )

SELECT *
FROM @t

GO
DROP TYPE dbo.IN_MEMORY_TABLE_TYPE
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2014 (12.0.4100.1 X64) 上执行UPDATE时,查询按预期执行,并返回以下有效结果:

source_col …

sql-server memory-optimized-tables sql-server-2016

14
推荐指数
1
解决办法
610
查看次数