Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Неудаляемые записи  [new]
kkkk
Member

Откуда:
Сообщений: 9
MSSQL: Можно ли сделать так чтобы записи из таблиц не удалялись запросами?
7 июл 03, 17:51    [253632]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
DENY DELETE ON [Table] TO public


???
7 июл 03, 17:56    [253639]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
fima
Member

Откуда: Москва
Сообщений: 583
Можно сделать триггер insted of delete и в нём ничего не делать, удаления и не будет...
7 июл 03, 18:03    [253648]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31596
Или after - триггер с роллбаком...
7 июл 03, 18:19    [253665]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
kkkk
Member

Откуда:
Сообщений: 9
А можно подробнее как все это сделать?
7 июл 03, 18:28    [253686]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 kkkk

А можно подробнее как все это сделать?

Вы про какой вариант?
7 июл 03, 18:45    [253706]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
kkkk
Member

Откуда:
Сообщений: 9
Можно про все
7 июл 03, 18:46    [253708]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31596
2kkkk
Я думаю, лучьше вы выложите здесь полное ТЗ, а мы вместе всё сделаем, и положим готовую программу. Год поддержки. Только просьба не сильно штрафовать за ошибки.
7 июл 03, 18:52    [253716]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 kkkk

Можно про все

Чур я за свой расказываю. :-)

Start->Programs->MS SQL Server->Query Analyzer->File->Connect->Выбираем базу->Нажимаем на клавиатуре следуюшие клавиши :

DENY DELETE ON [Table] TO public


заменив [Table] на реальное имя таблицы и нажимаем F5
7 июл 03, 18:56    [253718]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
kkkk
Member

Откуда:
Сообщений: 9
"Можно сделать триггер insted of delete и в нём ничего не делать, удаления и не будет..." - А это как сделать?
7 июл 03, 19:20    [253734]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
W
Guest
А так?

CREATE TRIGGER Insert_deny ON dbo.Table_Tr

AFTER DELETE
AS

IF EXISTS (SELECT count(*)
FROM deleted
WHERE ID = 11 -- ваше условие)


RAISERROR ('Блин, опять косяк.', 16, 1)


Картинка с другого сайта.
7 июл 03, 20:38    [253777]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
alex-ikar
Member

Откуда: Москва
Сообщений: 192
2W

А одним RaisError-ом вам все равно не отделаться :)
ещё и роллбак нужен:

if exists(select 1 from deleted)
begin
raisError 44444, 'хрен Вам'
rollback transaction
end
8 июл 03, 09:21    [254002]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
fima
Member

Откуда: Москва
Сообщений: 583
Триггер instead of delete выполняется при удалении из таблицы, при этом само удаление не происходит, а только выполняется код триггера... ну собстенно поэтому его и назвали "вместо удаления"
use pubs

go
if object_id('pubs..test2') is not null
begin
drop table test2
end
create table test2
(
num int
)
go
create trigger delete_test2
on test2
instead of delete
as
begin
print 'Запись не была удалена'
end
go
insert into test2 values (1)
go
delete from test2
go
select * from test2
8 июл 03, 09:33    [254022]     Ответить | Цитировать Сообщить модератору
 Re: Неудаляемые записи  [new]
Ash
Member

Откуда: Питер
Сообщений: 26
маленькое дополнение
в случае с запрещением удаления для всех при удалении возникнет ошибка- а в случае с триггером ошибки не будет- никто ничего не заметит и запись удалена не будет
8 июл 03, 11:28    [254205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить