![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли сделать чтобы пр удалении запись не удалялась а просто.. [D5, D6, IB6.x, Firebird]
Sirus © (2004-08-06 12:13:00)Привет Мастера...
Есть вопрос: Можно ли сделать так, чтобы при удалении запись не удалялась а просто помечалась как удаленная (изменялось только значение одного поля, скажем IS_DELETED=1)
stud (2004-08-06 14:14:00) [1]отбери у них права на удаление из нужной таблицы
Andrey_ (2004-08-06 14:06:00) [2]Да я сам не понял :)
Rule (2004-08-06 14:03:00) [3]Andrey (06.08.04 12:59) [13]
И я чегото не понял
Johnmen (2004-08-06 13:05:00) [4]>Andrey (06.08.04 12:59) [13]
Ты о чём ?
Andrey (2004-08-06 12:59:00) [5]Необходимо создать RULE перед удалением с параметром замены исходного SQL запроса на удаление (параметр похоже называется instead=true)
Rule (2004-08-06 12:55:00) [6]Sirus (06.08.04 12:49) [10]
тогда батенька вам надо логирование сделать или на тех же тригерах, тоесть заноситься в отдельную таблицу все изменения или же такаяже ерунда только автоматизированая есть в эксперте, так что я думаю это будет лучше ...
Sergey13 (2004-08-06 12:52:00) [7]2[10] Sirus (06.08.04 12:49)
Ха-ха-ха. Так ты в одно прекрасное утро там и тригера то можешь не увидеть. Не то что записи.
Sirus (2004-08-06 12:49:00) [8]Нет это для пользователей... Они научились удалять записи в таблице через IBExpert (нажимают там "-")...
А я хочу знать что он там удалил (чтобы потом спросить зачем???)...
Rule (2004-08-06 12:40:00) [9]Sirus (06.08.04 12:33) [7]
я имел ввиду носу :), лучше сделать как посоветовал
Johnmen © (06.08.04 12:19) [3]
Sirus (2004-08-06 12:35:00) [10]Rule © (06.08.04 12:31) [5], [6]
А в целом спасибо... Именно то что нужно...
Sirus (2004-08-06 12:33:00) [11]Объясните пожалуйста что такое "НОМУ"... И почему в нем нужно ковыряться через "Ж..." :)))
Rule (2004-08-06 12:31:00) [12]Rule © (06.08.04 12:30) [5]
извеняюсь поправка:
CREATE TRIGGER TABLE1_AD0 FOR TABLE1
ACTIVE AFTER DELETE POSITION 0
AS
begin
insert into TABLE1 (ID,FIELD1,FIELD2,FIELD3,IS_DELETED)
values (old.ID,old.FIELD1,old.FIELD2,old.FIELD3,'1');
end
Rule (2004-08-06 12:30:00) [13]Sirus (06.08.04 12:22) [4]
перекрыть стандартный запрос ты не сможешь единственный вариант - это создать тригер после удаления в котором вставишь только удаленную запись только значению поля из_делете присвоишь 1
ну вроде такого
CREATE TRIGGER TABLE1_AD0 FOR TABLE1
ACTIVE AFTER DELETE POSITION 0
AS
begin
insert into TABLE(ID,FIELD1,FIELD2,FIELD3,IS_DELETED)
values (old.ID,old.FIELD1,old.FIELD2,old.FIELD3,'1');
end
вот и все, только это называется ковырятся в ному через ж...
Sirus (2004-08-06 12:22:00) [14]А что нить наподобие тригера нелзья сделать... before delete или after delete??? :-(((
Johnmen (2004-08-06 12:19:00) [15]Хотеть не вредно. Обойдёшься...:)))
Вместо делете делай апдейт. И не морочь себе голову...
Sirus (2004-08-06 12:17:00) [16]Нееее... Хочу чтобы при выполнении SQL
delete from TABLE1
where FIELD1=1
выполнялся SQL
update TABLE1
set IS_DELETE=1
where FIELD=1 and IS_DELETED=0
Johnmen (2004-08-06 12:15:00) [17]Можно. Изменяй значение одного поля, скажем IS_DELETED=1
:)