sql-server - 删除 SQL Server 2016 中表列的始终生成的标识

标签 sql-server

我有一个具有以下架构的表

CREATE TABLE [dbo].[ATMs]
(
    [StartTime] DATETIME2 (2) GENERATED ALWAYS AS ROW START NOT NULL 
          CONSTRAINT [DF_M360_ATMs_StartTime] DEFAULT (SYSDATETIME()),
    [EndTime] DATETIME2 (2) GENERATED ALWAYS AS ROW END NOT NULL 
         CONSTRAINT [DF_M360_ATMs_EndTime] DEFAULT ('9999-12-31'),
    [ID] INT NOT NULL,
    [UserID] UNIQUEIDENTIFIER NOT NULL,
    [ApplicationID] VARCHAR(35) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL 
         CONSTRAINT [DF_M360_ATMs_ApplicationID] DEFAULT ('??????'),
    [ComputerNumber] SMALLINT NOT NULL 
         CONSTRAINT [DF_ATMs_ComputerNumber] DEFAULT ((-1)),
    [SQLStatement] CHAR(1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL 
         CONSTRAINT [DF_M360_ATMs_SQLStatement] DEFAULT ('I'),
    [IsTriggered] BIT NOT NULL 
         CONSTRAINT [DF_ATMs_IsTriggered] DEFAULT (1),  
    [Location] NVARCHAR(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)

我想在这个表中插入一些测试值。

但我无法将值插入到“StartTime”列中,因为它具有始终生成的标识。

所以我想删除该身份,然后将一些值插入表中并再次添加该身份。

能否请您帮我删除标识或提供任何其他解决方案以将值插入“StartTime”列?

最佳答案

您是否尝试过对这些列使用默认?我认为您不必一次又一次地删除和添加这些列。

INSERT INTO [dbo].[Department] ([DeptID] ,[DeptName] ,[ManagerID] ,
ParentDeptID], SysStartTime, SysEndTime)   
VALUES(11, 'Sales', 101, 1, default, default);  

更多详情:https://msdn.microsoft.com/en-us/library/mt591019.aspx

关于sql-server - 删除 SQL Server 2016 中表列的始终生成的标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472626/

相关文章:

sql - 如何向 SQL Server 中的表添加不允许空值的列?

sql-server - 需要 SSDT 循环引用/ Unresolved reference 解决方法

sql-server - 查询优化器无法将谓词推过汇总?提示也不起作用

sql - 使用 where 子句中的计数条件选择行

sql-server - 使用 dtexec 执行远程 ssis 包

sql - SQL Server中的UNIX_TIMESTAMP

sql-server - SQL Server : change primary key with related rows

sql-server - SQL Server 2005 数据加密和 LINQ TO SQL

sql - 如何为不返回行的查询设置默认行?

sql - 如何在 SQL 查询中使用 IF-THEN-ELSE 逻辑包含可选参数?