Sql 为什么这个新的可空时间戳字段包含我添加到具有预先存在的记录的表之后的值?
我有以下疑问。我使用的是Microsoft SQL Server,我在表中添加了一个名为Data的时间戳字段,指定该字段可为空。我将这个新字段添加到一个包含一些预先存在的记录的表中 问题是查询我的表时:Sql 为什么这个新的可空时间戳字段包含我添加到具有预先存在的记录的表之后的值?,sql,sql-server,database,Sql,Sql Server,Database,我有以下疑问。我使用的是Microsoft SQL Server,我在表中添加了一个名为Data的时间戳字段,指定该字段可为空。我将这个新字段添加到一个包含一些预先存在的记录的表中 问题是查询我的表时: SELECT TOP 1000 [ID] ,[Numero protocollo] ,[Anno] ,[IdUor] ,[Protocollista] ,[Protocollato] ,[Lavorato] ,[
SELECT TOP 1000 [ID]
,[Numero protocollo]
,[Anno]
,[IdUor]
,[Protocollista]
,[Protocollato]
,[Lavorato]
,[Errore]
,[CopiaConoscenza]
,[Inoltro]
,[Data]
FROM [IWG_PG].[dbo].[PROT_INOLTRO]
我获得这些数据包含0x00000000000007F8,0x00000000000007F9等值
为什么??我希望找到null。为什么这些记录在数据字段中有值
编辑-:这是脚本:
USE [IWG_PG]
GO
/****** Object: Table [dbo].[PROT_INOLTRO] Script Date: 1/2/2019 4:54:03 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PROT_INOLTRO](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Numero protocollo] [int] NOT NULL,
[Anno] [int] NOT NULL,
[IdUor] [int] NOT NULL,
[Protocollista] [nvarchar](50) NOT NULL,
[Protocollato] [bit] NOT NULL,
[Lavorato] [bit] NOT NULL,
[Errore] [bit] NOT NULL,
[CopiaConoscenza] [bit] NOT NULL,
[Inoltro] [bit] NOT NULL,
[Data] [timestamp] NULL,
CONSTRAINT [PK_PROT_INOLTRO] PRIMARY KEY NONCLUSTERED
(
[Numero protocollo] ASC,
[Anno] ASC,
[IdUor] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
如您所见,数据字段设置为空您也不应该使用名称数据。此名称可以保留-->
也许这会导致一些副作用,你也不应该使用名称数据。此名称可以保留-->
可能这会导致一些副作用时间戳
数据类型已被弃用,并且是行版本
数据类型的同义词(有关详细信息,请参阅)。而rowversion
包含自动生成的二进制数。引自同一页:
是一种数据类型,它公开数据库中自动生成的唯一二进制数。rowversion通常用作表格行的版本戳记机制。存储大小为8字节。rowversion数据类型只是一个递增的数字,不保留日期或时间。要记录日期或时间,请使用datetime2数据类型
也许您只想使用datetime
列?不推荐使用timestamp
数据类型,并且是rowversion
数据类型的同义词(有关详细信息,请参阅)。而rowversion
包含自动生成的二进制数。引自同一页:
是一种数据类型,它公开数据库中自动生成的唯一二进制数。rowversion通常用作表格行的版本戳记机制。存储大小为8字节。rowversion数据类型只是一个递增的数字,不保留日期或时间。要记录日期或时间,请使用datetime2数据类型
也许您只是想使用一个datetime
列?也许您的表有一个默认值?请包含生成表的脚本(从SQLServerManagementStudio创建),这实际上是的副本。Timestamp是一个synonum,对于RowVersion,它是不可为空的(即使它是这样声明的)?请包含生成表的脚本(从SQLServerManagementStudio创建),这实际上是的副本。Timestamp是一个synonum,对于RowVersion,它是不可为空的(即使它是这样声明的)。同样的问题也会改变名称问题也会改变名称