mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-14 00:01:30 -04:00
90 lines
1.8 KiB
SQL
90 lines
1.8 KiB
SQL
whenever sqlerror exit failure
|
|
set verify off
|
|
set serveroutput on
|
|
|
|
update objects
|
|
set deleted = (select reason_code from delete_reasons where tag='ContainerDeleted')
|
|
where deleted = 0
|
|
and contained_by <> 0
|
|
and player_controlled = 'N'
|
|
and not exists
|
|
(select * from objects o2
|
|
where o2.object_id = objects.contained_by);
|
|
|
|
begin
|
|
loop
|
|
update objects
|
|
set deleted = (select reason_code from delete_reasons where tag='ContainerDeleted')
|
|
where deleted = 0
|
|
and contained_by <> 0
|
|
and player_controlled = 'N'
|
|
and exists
|
|
(select *
|
|
from objects o2
|
|
where o2.deleted <>0
|
|
and objects.contained_by = o2.object_id);
|
|
|
|
exit when sql%rowcount=0;
|
|
end loop;
|
|
end;
|
|
/
|
|
|
|
declare
|
|
c number;
|
|
begin
|
|
loop
|
|
delete objects where deleted <> 0 and rownum <= 100000;
|
|
c := sql%rowcount;
|
|
commit;
|
|
exit when c=0;
|
|
end loop;
|
|
end;
|
|
/
|
|
|
|
delete players
|
|
where not exists
|
|
(select *
|
|
from objects
|
|
where objects.object_id = players.character_object);
|
|
|
|
commit;
|
|
|
|
delete messages
|
|
where not exists (select * from objects where objects.object_id = messages.target);
|
|
|
|
commit;
|
|
|
|
declare
|
|
type curtype is ref cursor;
|
|
tablelist curtype;
|
|
tablename varchar2(200);
|
|
begin
|
|
dbms_output.enable(20000);
|
|
|
|
open tablelist for
|
|
select distinct table_name
|
|
from user_tab_columns
|
|
where column_name = 'OBJECT_ID'
|
|
and table_name <> 'OBJECTS'
|
|
and table_name <> 'OBJECT_VARIABLES'
|
|
and table_name <> 'SCRIPTS';
|
|
|
|
loop
|
|
fetch tablelist into tablename;
|
|
exit when tablelist%notfound;
|
|
dbms_output.put_line(tablename);
|
|
--dbms_output.put_line('delete ' || tablename || ' where not exists (select * from objects where objects.object_id = '|| tablename || '.object_id);');
|
|
execute immediate 'delete ' || tablename || ' where not exists (select * from objects where objects.object_id = '|| tablename || '.object_id)';
|
|
|
|
commit;
|
|
end loop;
|
|
close tablelist;
|
|
end;
|
|
/
|
|
|
|
commit;
|
|
|
|
undefine schema;
|
|
set verify on;
|
|
exit;
|