sql >> Database >  >> RDS >> Oracle

Onderdruk ORA-00942 fouten in ddl create scripts

Idealiter zouden we ons schema goed moeten onderhouden, met behulp van best practices voor bronbeheer en configuratiebeheer. In dit scenario weten we van tevoren of het schema waarop we onze scripts uitvoeren die tabellen bevat. We krijgen geen fouten omdat we niet proberen tabellen te verwijderen die niet bestaan.

Het is echter niet altijd mogelijk om dit te doen. Een alternatieve benadering is om twee scripts te hebben. Het eerste script heeft alleen de DROP TABLE-instructies, voorafgegaan door een vriendelijke

PROMPT  It is safe to ignore any ORA-00942 errors in the following statements

Het tweede script heeft alle CREATE TABLE-instructies en begint met

PROMPT  All the statements in this script should succeed.  So investigate any errors

Een andere optie is om de datadictionary te gebruiken:

begin
    for r in ( select table_name from user_tables )
    loop
        execute immediate 'drop table '||r.table_name
                    ||' cascade constraints';
    end loop;
end;

Wees voorzichtig met deze. Het is de nucleaire optie en zal elke tabel in je schema laten vallen.




  1. COALESCE correct gebruiken in de WHERE-clausule

  2. Unicode naar niet-Unicode conversie

  3. Java MYSQL-verklaringsfout:controleer de syntaxis voor gebruik in de buurt van '?' op regel 1

  4. De resultaten van een query gebruiken als kolomnamen in een SELECT-instructie