是否有一种方法或语法允许使用数据填充只有行版本/时间戳列的表?
CREATE TABLE [dbo].[TimeStamp_Test]([row_version] [timestamp] NOT NULL)发布于 2016-08-11 20:06:59
我不知道为什么你会需要这个,但是的,这是可能的。
Insert into [dbo].[TimeStamp_Test] default values;或
Insert into [dbo].[TimeStamp_Test] values (default);要执行多行操作,可以使用merge。
发布于 2016-08-13 10:46:52
您还可以从结果集中弹出默认值,这对于生成大量值来说更快。对于rowversion (又名timestamp),您可以在其中选择一个null。我经常用这种技术快速地竖起测试平台。
USE tempdb
GO
SET NOCOUNT ON
-- Create a large table
IF OBJECT_ID('dbo.largeTable') IS NOT NULL DROP TABLE dbo.largeTable
CREATE TABLE dbo.largeTable ( rowId INT IDENTITY PRIMARY KEY, someData UNIQUEIDENTIFIER DEFAULT NEWID(), dateAdded DATETIME DEFAULT GETDATE(), addedBy VARCHAR(30) DEFAULT SUSER_NAME(), ts ROWVERSION )
GO
-- Populate table: this took just under a min on my laptop
BEGIN TRAN
GO
INSERT INTO dbo.largeTable DEFAULT VALUES
GO 1000000
COMMIT TRAN
-- This took < 2 seconds
;WITH cte AS (
SELECT TOP 1000000 ROW_NUMBER() OVER ( ORDER BY ( SELECT 1 ) ) rn
FROM master.sys.columns c1
CROSS JOIN master.sys.columns c2
CROSS JOIN master.sys.columns c3
)
INSERT INTO dbo.largeTable ( ts )
SELECT NULL
FROM ctehttps://dba.stackexchange.com/questions/146564
复制相似问题