sql >> Database >  >> RDS >> Oracle

Hoe tabelopmerkingen te krijgen via SQL in Oracle?

Aangezien 10g Oracle tabellen niet onmiddellijk laat vallen wanneer we een DROP TABLE-instructie uitgeven. In plaats daarvan hernoemt het ze als volgt BIN$IN1vjtqhTEKcWfn9PshHYg==$0 en stopt ze in de prullenbak. Dit stelt ons in staat om tabellen te herstellen die we niet wilden laten vallen. Meer informatie .

Tabellen in de prullenbak zijn nog steeds tabellen, dus ze verschijnen in ALL_TABLES en vergelijkbare weergaven. Dus als u alleen opmerkingen wilt zien die alleen betrekking hebben op live (niet-gedropte) tafels, moet u filteren op tafelnaam:

select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/

Je hebt gelijk, het zou ongelooflijk zijn. Dus ik controleerde de documentatie en het bleek dat Oracle 10g een kolom met de naam DROPPED heeft toegevoegd aan de USER_/ALL_/DBA_TABLES-weergaven.

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'
/

Bekijk de documentatie . Het is duidelijk dat de noodzaak om deel te nemen aan de ALL_TABLES-weergave meer typen vereist dan filteren op de naam, dus afhankelijk van onze behoefte kan het misschien eenvoudiger zijn om de originele WHERE-clausule te behouden.



  1. samengevoegde tabelrijen in kolommen met kolomtitels van originele rijen

  2. TRUNC(datum) Functie in Oracle

  3. Hoe .htaccess te gebruiken voor mooie links

  4. Hoe te repareren Ora-01427 single-rij subquery retourneert meer dan één rij in select?