|
|
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
Можно ли прервать выполнение транзакции на удаление записи, во время выполнения триггера на удаление? (Например каким-нибудь хитрым Эксепшеном) Как я это делал в оракуле... Запись не нужно удалять, нужно лишь пометить удаленной. В FB приходится изголяться вроде следующего: CREATE TABLE T (ID DECIMAL(18, 0) NOT NULL, NAME VARCHAR(128), DELETED TIMESTAMP, PRIMARY KEY (ID)); SET TERM ^ ; CREATE TRIGGER T_DEL FOR T ACTIVE AFTER DELETE POSITION 0 AS DECLARE VARIABLE n decimal(18,0); DECLARE VARIABLE s varchar(128); BEGIN n = old.id; s = old.name; insert into t(id,name,deleted) values(:n,:s,current_timestamp); END ^ COMMIT WORK ^ SET TERM ;^ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2004, 19:13:50 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
авторЗапись не нужно удалять, нужно лишь пометить удаленной а зачем??? если сам пишешь клиента, то пусть в определённой ситуации делается update специального поли, типа запись удалена и т.д. ЗЫ не репликацию делаешь случаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 08:18:03 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
Не знаю как в FB, а в IB легко. Код: plaintext Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 09:05:49 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
B fb такая же фигня :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 09:11:39 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
Пишу не реприкации, система учета/мониторинга. В таблице необходимо сделать псевдо-удаление, молча, и успешно. Пользователь через представление/view видит только те записи, в которых поле deleted is null. 2:Zmeishe - так пробовал, если записей псевдо-удалили несколько, то ловим пучок сообщений. (а как сделать, чтобы молча, яко-бы удаление прошло успешно?) Воодще-то задача достаточно тривиальная и часто используемая, например в бухгалтерских системах (не 1С). Записи можно только помечать удаленными, но нельзя удалять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 15:53:02 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
так если клиент свой, то почему не сделать просто update на кнопку удаления, то есть обновляешь ключевое поле, а потом выводишь записи по условию, что мешает? и никаких эксепшенов не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 16:40:01 |
|
||
|
After / Before delete triggers
|
|||
|---|---|---|---|
|
#18+
Каков твой вопрос nk_xМожно ли прервать выполнение транзакции на удаление записи, во время выполнения триггера на удаление? (Например каким-нибудь хитрым Эксепшеном)Таков мой ответ. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Эксепшен на то и эксепшен чтобы прервать и после него ничего не выполнилось. nk_xВоодще-то задача достаточно тривиальная и часто используемая, например в бухгалтерских системах (не 1С). Записи можно только помечать удаленными, но нельзя удалять... Отними права на удаление у всех. Если для изменений используешь компонент IBUpdateSQL, то в свойство DeleteSQL пропиши Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2004, 17:19:35 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32547140&tid=1578524]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 499ms |

| 0 / 0 |
