如何在列上添加 HIDDEN 属性?
How to add HIDDEN property on column?
创建临时table时,我们需要定义开始和结束日期时间列
可以是 hidden
- 在 SELECT *
或 INSERT without columns
中不可见。我想再添加一列,其中将包含有关提交更改的用户的信息。
问题是,我收到以下错误:
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 ] ]
GENERATED ALWAYS AS ROW START/END 是强制性的。和
另请注意,System-versioned table 不能超过一个 'GENERATED ALWAYS AS ROW END' 列
另请注意,System-versioned table 不能超过一个 'GENERATED ALWAYS AS ROW START' 列
因此,如果您已经在使用 2 个日期列,则无法使用。
我认为我们可以只使用具有默认值的普通列。
参考更多来自 Microsoft - https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql
这里的正确答案是我们可以只为时态表日期列(当前)添加这个属性。
如果版本控制停止且列未隐藏,则 属性 添加如下:
ALTER TABLE dbo.Department
ALTER COLUMN SysStartTime ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN SysEndTime ADD HIDDEN;
创建临时table时,我们需要定义开始和结束日期时间列
可以是 hidden
- 在 SELECT *
或 INSERT without columns
中不可见。我想再添加一列,其中将包含有关提交更改的用户的信息。
问题是,我收到以下错误:
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 ] ]
GENERATED ALWAYS AS ROW START/END 是强制性的。和
另请注意,System-versioned table 不能超过一个 'GENERATED ALWAYS AS ROW END' 列
另请注意,System-versioned table 不能超过一个 'GENERATED ALWAYS AS ROW START' 列
因此,如果您已经在使用 2 个日期列,则无法使用。 我认为我们可以只使用具有默认值的普通列。
参考更多来自 Microsoft - https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql
这里的正确答案是我们可以只为时态表日期列(当前)添加这个属性。
如果版本控制停止且列未隐藏,则 属性 添加如下:
ALTER TABLE dbo.Department
ALTER COLUMN SysStartTime ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN SysEndTime ADD HIDDEN;