Тъй като 10g Oracle не премахва незабавно таблици, когато издадем оператор DROP TABLE. Вместо това ги преименува така BIN$IN1vjtqhTEKcWfn9PshHYg==$0
и ги поставя в кошчето. Това ни позволява да възстановим таблици, които не сме искали да изпуснем. Научете повече
.
Таблиците в кошчето все още са таблици, така че се показват във ALL_TABLES и подобни изгледи. Така че, ако искате да видите само коментари, отнасящи се само до живи (неизтрити) таблици, трябва да филтрирате по име на таблица:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Прав си, би било невероятно. Така че проверих документацията, оказа се, че Oracle 10g е добавил колона, наречена DROPPED, към изгледите USER_/ALL_/DBA_TABLES.
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'
/
Вижте документацията . Очевидно необходимостта от присъединяване към изгледа ALL_TABLES изисква повече въвеждане, отколкото филтриране на името, така че в зависимост от нашите нужди може да е по-лесно да запазим оригиналната клауза WHERE.