Protože 10g Oracle nezahazuje tabulky okamžitě, když vydáváme příkaz DROP TABLE. Místo toho je přejmenuje takto BIN$IN1vjtqhTEKcWfn9PshHYg==$0
a hodí je do koše. To nám umožňuje obnovit tabulky, které jsme nechtěli zahodit. Další informace
.
Tabulky v koši jsou stále tabulky, takže se zobrazují v ALL_TABLES a podobných zobrazeních. Pokud tedy chcete vidět pouze komentáře týkající se pouze živých (nevypuštěných) tabulek, musíte filtrovat podle názvu tabulky:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Máte pravdu, bylo by to neuvěřitelné. Zkontroloval jsem tedy dokumentaci a ukázalo se, že Oracle 10g přidal do zobrazení USER_/ALL_/DBA_TABLES sloupec s názvem DROPPED.
select tc.*
from all_tab_comments tc
join all_tables t
on tc.owner = t.owner
and tc.table_name = t.table_name
where t.dropped = 'NO'
/
Prohlédněte si dokumentaci . Potřeba připojit se k zobrazení ALL_TABLES samozřejmě vyžaduje více psaní než filtrování názvu, takže v závislosti na naší potřebě může být jednodušší zachovat původní klauzuli WHERE.