How to add HIDDEN property on column?

别等时光非礼了梦想. 提交于 2021-02-16 13:37:47

问题


When temporal table is created, we need to defined start and end date time columns which can be hidden - not visible in SELECT * or INSERT without columns. I want to add one more column, which will contain information about the user who has commit the change.

The issue is, I am getting the following error:

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.

Here is the code:

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;

Why I am not allowed to add this attribute on such column?


回答1:


FOR this you need to use like below

[ GENERATED ALWAYS AS ROW { START | END } [ HIDDEN ] ] 

GENERATED ALWAYS AS ROW START/END is compulsory. and

Also note that System-versioned table cannot have more than one 'GENERATED ALWAYS AS ROW END' column

Also note that System-versioned table cannot have more than one 'GENERATED ALWAYS AS ROW START' column

So if you are already using 2 dates column then it will not be possible. I think we can just use a normal column with default value.

Refer more from Microsoft - https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql




回答2:


Th correct answer here is that we can add this property only for temporal tables date columns (currently).

If the versioning is stopped and the columns are not hidden, the property is added like this:

ALTER TABLE dbo.Department
    ALTER COLUMN SysStartTime ADD HIDDEN;

ALTER TABLE dbo.Department
    ALTER COLUMN SysEndTime ADD HIDDEN;


来源:https://stackoverflow.com/questions/49167924/how-to-add-hidden-property-on-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!