2010-01-28 2 views
3

Есть ли параллель в Microsoft SQL Server (желательно, 2005 г.) для функциональности Oracle, чтобы установить столбец, который не использовался? Например:SQL Server параллель с Oracle Alter Table Set Column Unused?

ALTER TABLE Person SET UNUSED Nickname; 

Ничего не возникает при поиске, поэтому я считаю, что эта функция должна быть специфичной для Oracle.

ответ

2

Не думайте, что на SQL-сервере есть что-то подобное.

Вы можете создать 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 * также потерпит неудачу.

1

Нет эквивалентного оператора, но в зависимости от ваших потребностей вы, вероятно, можете написать триггер, чтобы отменить любые изменения, если они сделаны.

Смежные вопросы