【发布时间】:2011-01-10 15:25:35
【问题描述】:
在 Microsoft SQL Server(最好是 2005 年)中是否有类似的 Oracle 功能将列设置为未使用?例如:
ALTER TABLE Person SET UNUSED Nickname;
搜索中没有任何结果,所以我认为此功能必须是 Oracle 特定的。
【问题讨论】:
标签: sql-server sql-server-2005 oracle
在 Microsoft SQL Server(最好是 2005 年)中是否有类似的 Oracle 功能将列设置为未使用?例如:
ALTER TABLE Person SET UNUSED Nickname;
搜索中没有任何结果,所以我认为此功能必须是 Oracle 特定的。
【问题讨论】:
标签: sql-server sql-server-2005 oracle
不要认为 SQL server 中有类似的东西。
您可以创建与包含隐藏列的新表的 1:1 关系:
insert into NewTable
select (keycol, Nickname) from ExistingTable
alter table ExistingTable drop column Nickname
这样你仍然有数据,但列在一个没人知道的表中。
或者,您可以使用列级权限:
DENY SELECT (Nickname) ON ExistingTable TO domain\user
DENY SELECT (Nickname) ON ExistingTable TO public
...
当有人尝试阅读该列时,这将返回错误。这种方法最大的缺点是select *也会失败。
【讨论】:
没有等效的语句,但根据您的需要,您可能会编写一个触发器来回滚任何更改。
【讨论】: