Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

Триггер ограничивающий удаление строк.   Найти похожие ветки 

 
tomat   (2002-12-18 12:07) [0]

Зравствуйте!

Существует ли возможность с помощью триггера (или др. средств) запретить удалять строку (запись) в зависимости от значения столбца (поля).

Спасибо!


 
Romkin ©   (2002-12-18 12:09) [1]

Можно, достаточно дать exception в нужный момент, и вся транзакция откатится. Ессно, before delete


 
FreeLancer ©   (2002-12-18 12:14) [2]

BEFORE DELETE

...
AS
BEGIN
IF (Pole = "Bad Value") THEN EXCEPTION MyException;
END

или

...
AS
BEGIN
IF (Pole = "Bad Value") THEN EXIT; /* По-тихому */
END


 
tomat   (2002-12-18 12:40) [3]

CREATE TRIGGER TEST_TRIGGER FOR TEST
ACTIVE
BEFORE DELETE
AS
BEGIN
IF ( OLD.CODE = 0 ) THEN EXIT;
END^

Ошибочка, в чём косяк не пойму!
EXIT по английски!

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown.
EXIT.


 
Sergey Masloff   (2002-12-18 12:44) [4]

EXIT
Jumps to the final END statement in the procedure. Available in stored procedures only.
~~~~~~~~~~~~~~~~~


 
tomat   (2002-12-18 12:49) [5]

И что без исключения ника нельзя?!


 
Romkin ©   (2002-12-18 13:02) [6]

Никак, да и exit имеет полностью тот же смысл, что и в Delphi, и запись удалится. На клиенте обычно сообщение и требуется, почему нельзя удалить, поэтому и exception


 
Reindeer Moss Eater   (2002-12-18 13:04) [7]

И что без исключения ника нельзя?!
Можно.
Например делать Insert удаляемой записи в триггере на BEFORE DELETE :)


 
Romkin ©   (2002-12-18 13:06) [8]

Извращение...


 
Reindeer Moss Eater   (2002-12-18 13:16) [9]

Ну триггер, обламывающий DELETE - это не меньшее извращение


 
Johnmen ©   (2002-12-18 13:26) [10]

>Reindeer Moss Eater (18.12.02 13:16)

Ничего подобного !


>tomat

Возбуждать ексепшн есть стандартное, абсолютно правильное решение.


 
Reindeer Moss Eater   (2002-12-18 13:39) [11]

>Johnmen ©
Я вот что имел ввиду. Если триггер знает о всех строках, которые удалять нельзя, то я бы например не давал гранты на удаление из самой таблицы никому. Создал бы View, включающий все строки, которые можно удалять. И запросы на удаление делал бы к просмотру


 
Alexandr ©   (2002-12-18 13:42) [12]

давайте не будет тут про обновляемый view.



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-37194
DJ_Sedoy
2002-12-28 00:28
2003.01.13
Обработчик событий


14-37295
MVa
2002-12-23 09:27
2003.01.13
detonator


3-36987
Vanya
2002-12-18 12:51
2003.01.13
глюки dbExpress + MySQL, как фиксить?


6-37256
Евген
2002-11-14 12:06
2003.01.13
Включение компа по сети


4-37481
Сан Саныч
2002-11-09 09:30
2003.01.13
Виртуальный файл для чтения