【问题标题】:SQL Server parallels to Oracle Alter Table Set Column Unused?SQL Server 平行于 Oracle Alter Table Set 列未使用?
【发布时间】:2011-01-10 15:25:35
【问题描述】:

在 Microsoft SQL Server(最好是 2005 年)中是否有类似的 Oracle 功能将列设置为未使用?例如:

ALTER TABLE Person SET UNUSED Nickname;

搜索中没有任何结果,所以我认为此功能必须是 Oracle 特定的。

【问题讨论】:

    标签: sql-server sql-server-2005 oracle


    【解决方案1】:

    不要认为 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 *也会失败。

    【讨论】:

      【解决方案2】:

      没有等效的语句,但根据您的需要,您可能会编写一个触发器来回滚任何更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 1970-01-01
        • 2011-06-18
        相关资源
        最近更新 更多