Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 можно ли сымитировать триггер для truncate  [new]
empire
Guest
имеется таблица с полем part и из этой таблицы можно удалять данные только с part больше 1. ок, вешаю триггер на delete. но ведь при этом могут удалить все, сделав просто truncate. подскажите пожалуйста, как бы еще запретить truncate?
21 ноя 11, 00:08    [11628995]     Ответить | Цитировать Сообщить модератору
 Re: можно ли сымитировать триггер для truncate  [new]
denisofff
Member

Откуда: Владивосток
Сообщений: 62
empire,

Для того, чтобы сделать truncate нужно иметь разрешения как минимум ALTER TABLE. Есть у пользователя такие права? Если есть - то запретить :)
21 ноя 11, 01:46    [11629158]     Ответить | Цитировать Сообщить модератору
 Re: можно ли сымитировать триггер для truncate  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
empire
подскажите пожалуйста, как бы еще запретить truncate?
А ссылочные констрейны для этой таблицы не нужны? Заодно и транкейт запретите :-)
21 ноя 11, 08:50    [11629410]     Ответить | Цитировать Сообщить модератору
 Re: можно ли сымитировать триггер для truncate  [new]
empire
Guest
alexeyvg
empire
подскажите пожалуйста, как бы еще запретить truncate?
А ссылочные констрейны для этой таблицы не нужны? Заодно и транкейт запретите :-)

ну так были бы, и удалять не получалось бы.
а про разрешение: так кто может удалять, тот и сможет сделать truncate, видимо никому доверять нельзя. вернее, доверяй, но проверяй, наверное так. хотелка-то не моя...
21 ноя 11, 23:40    [11635218]     Ответить | Цитировать Сообщить модератору
 Re: можно ли сымитировать триггер для truncate  [new]
denisofff
Member

Откуда: Владивосток
Сообщений: 62
empire
а про разрешение: так кто может удалять, тот и сможет сделать truncate, видимо никому доверять нельзя. вернее, доверяй, но проверяй, наверное так. хотелка-то не моя...

Если есть разрешения на DELETE - это не значит, что есть разрешения на TRUNCATE.
Для TRUNCATE надо ALTER TABLE или db_owner или db_ddladmin или sysadmin. Но, если у Вас пользователи работают с такими правами, то alexeyvg подкинул прекрасную идею - сделайте ссылочный констрейн на эту таблицу и никто не сможет сделать TRUNCATE.
22 ноя 11, 02:21    [11635459]     Ответить | Цитировать Сообщить модератору
 Re: можно ли сымитировать триггер для truncate  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
denisofff
empire
а про разрешение: так кто может удалять, тот и сможет сделать truncate, видимо никому доверять нельзя. вернее, доверяй, но проверяй, наверное так. хотелка-то не моя...

Если есть разрешения на DELETE - это не значит, что есть разрешения на TRUNCATE.
Для TRUNCATE надо ALTER TABLE или db_owner или db_ddladmin или sysadmin. Но, если у Вас пользователи работают с такими правами, то alexeyvg подкинул прекрасную идею - сделайте ссылочный констрейн на эту таблицу и никто не сможет сделать TRUNCATE.
Люди с правами админа без труда сначала удалят FK, а потом сделают TRUNCATE TABLE
22 ноя 11, 09:26    [11635726]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить