- Отключить триггеры (перед этим желательно запомнить какие триггеры были в неактивном состоянии).
Выполнить delete from ac_entry.
Выполнить delete from inv_movement.
Выполнить delete from inv_balance.
Потом удалять данные из таблиц позиций документов (имена %LINE). Можно написать такой запрос: SELECT 'DELETE FROM ' || a.relationname || ';' FROM at_relations WHERE relationname like 'USR$%LINE', выполнить в IBExpert, скопировать в буфер результат и вставить в окно скрипта.
Выполнять многократно delete from inv_card c where not exists (select c1.id from inv_card с1 where c1.parent = c.id) пока все не удалится.
Выполнять многократно delete from gd_document, смотреть какие таблицы ругаются и удалять из них информацию. Повторять, пока не очистится gd_document.
Подключить отключенные триггеры.
execute block
as
declare variable stmt varchar(1024);
declare variable dt integer;
declare variable rn varchar(31);
begin
for
select t.id, r.relationname from at_relations r
join gd_documenttype t on t.linerelkey = r.id
into :dt, :rn
do begin
stmt = 'delete from gd_document doc ' ||
' where doc.documenttypekey = ' || :dt ||
' and not (doc.parent is null) ' ||
' and not (doc.id in (select documentkey ' ||
' from ' || :rn || '))';
execute statement :stmt;
end
end
1 комментарий:
6. Пункт
UPDATE INV_CARD
SET PARENT = null
6.1 DELETE FROM INV_CARD
Отправить комментарий