Sql server 如何在列上添加隐藏属性?
创建时态表时,我们需要定义开始和结束日期时间列 在Sql server 如何在列上添加隐藏属性?,sql-server,tsql,sql-server-2016,temporal-tables,Sql Server,Tsql,Sql Server 2016,Temporal Tables,创建时态表时,我们需要定义开始和结束日期时间列 在选择*或不带列插入时,可以隐藏-不可见。我想再添加一列,其中将包含有关提交更改的用户的信息 问题是,我得到了以下错误: Msg 13735, Level 16, State 1, Line 10 Cannot alter HIDDEN attribute on column 'UserID' in table 'GK' because this column is not a generated always column. 代码如下: DRO
选择*
或不带列插入时,可以隐藏
-不可见。我想再添加一列,其中将包含有关提交更改的用户的信息
问题是,我得到了以下错误:
Msg 13735, Level 16, State 1, Line 10
Cannot alter HIDDEN attribute on column 'UserID' in table 'GK' because this column is not a generated always column.
代码如下:
DROP TABLE IF EXISTS GK;
CREATE TABLE GK
(
[ID] INT
,[UserID] BIGINT DEFAULT (CONVERT(BIGINT, SESSION_CONTEXT(N'user_id')))
)
ALTER TABLE GK
ALTER COLUMN [UserID] ADD HIDDEN;
为什么不允许我在这样的列中添加此属性?为此,您需要像下面这样使用
[ GENERATED ALWAYS AS ROW { START | END } [ HIDDEN ] ]
必须始终作为行开始/结束生成。及
还请注意,系统版本表不能有多个“始终作为行结束生成”列
还请注意,系统版本表不能有多个“始终作为行开始生成”列
所以,如果您已经在使用2个日期列,那么它将不可能。
我认为我们可以使用一个带有默认值的普通列
请参阅Microsoft的更多信息-这里的正确答案是,我们只能为时态表日期列(当前)添加此属性
如果版本控制已停止且列未隐藏,则会按如下方式添加属性:
ALTER TABLE dbo.Department
ALTER COLUMN SysStartTime ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN SysEndTime ADD HIDDEN;
如果他们为时态表提供这种开箱即用的话,那就太好了。对于时态表,我们不能添加DateTime ans以外的隐藏列类型,因为简单的解决方案是从这个表中创建视图,并排除列UserID并使用这个视图。