如何确定一个列是否是时态列?



我有一个包含时间列的表:

CREATE TABLE [dbo].[Profile](
[Id] [int] IDENTITY(1,1) NOT NULL,
[CreatedDate] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
[UpdatedDate] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
PERIOD FOR SYSTEM_TIME (CreatedDate, UpdatedDate),
CONSTRAINT [PK_Profile] PRIMARY KEY CLUSTERED 
(
[Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

我想确定我的一个表列是否是"GENERATED ALWAYS"列的类型,这不起作用并返回0

declare @TABLE_SCHEMA as nvarchar(255) = 'dbo'
declare @TABLE_NAME as nvarchar(255) = 'Profile'
declare @COLUMN_NAME as nvarchar(255) = 'CreatedDate'
select COLUMNPROPERTY(object_id('[' + @TABLE_SCHEMA + '].[' + @TABLE_NAME + ']'), @COLUMN_NAME, 'IsComputed')

根据另一个答案,我能够弄清楚,下面的代码将返回1(对于行最后更新日期)或2(对于行开始日期),如果它是生成的始终列,或0,如果它不是

https://learn.microsoft.com/en us/dotnet/api/microsoft.sqlserver.management.smo.generatedalwaystype?view=sql - smo - 160

declare @TABLE_SCHEMA as nvarchar(255) = 'dbo'
declare @TABLE_NAME as nvarchar(255) = 'Profile'
declare @COLUMN_NAME as nvarchar(255) = 'CreatedDate'
select COLUMNPROPERTY(object_id('[' + @TABLE_SCHEMA + '].[' + @TABLE_NAME + ']'), @COLUMN_NAME, 'GeneratedAlwaysType')

相关内容

最新更新