Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在列上添加隐藏属性?_Sql Server_Tsql_Sql Server 2016_Temporal Tables - Fatal编程技术网

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并使用这个视图。