首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平凡RowVersion问题

平凡RowVersion问题
EN

Database Administration用户
提问于 2016-08-11 20:02:25
回答 2查看 197关注 0票数 2

是否有一种方法或语法允许使用数据填充只有行版本/时间戳列的表?

代码语言:javascript
复制
CREATE TABLE [dbo].[TimeStamp_Test]([row_version] [timestamp] NOT NULL)
EN

回答 2

Database Administration用户

回答已采纳

发布于 2016-08-11 20:06:59

我不知道为什么你会需要这个,但是的,这是可能的。

代码语言:javascript
复制
Insert into [dbo].[TimeStamp_Test] default values;

代码语言:javascript
复制
Insert into [dbo].[TimeStamp_Test] values (default);

要执行多行操作,可以使用merge

票数 4
EN

Database Administration用户

发布于 2016-08-13 10:46:52

您还可以从结果集中弹出默认值,这对于生成大量值来说更快。对于rowversion (又名timestamp),您可以在其中选择一个null。我经常用这种技术快速地竖起测试平台。

代码语言:javascript
复制
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 cte
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/146564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档