Главная страница
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.03 c
4-37454
rhf
2002-11-24 19:14
2003.01.13
Popup меню из ресурса


3-36995
Filat
2002-12-19 10:29
2003.01.13
В D6 не работает dsEdit, dsInsert. Неизвестный идентификатор?


14-37378
grifon
2002-12-24 18:22
2003.01.13
IntetCart


4-37476
Alex Bogdanov
2002-11-28 03:26
2003.01.13
WinExec


3-36936
Karbo
2002-12-17 12:11
2003.01.13
Сохранить результат запроса в новой таблице