Ohjelmointi

Oracle-tietokannan rajoitusten nopea tarkastelu

Kun työskentelen Oracle-tietokannan kanssa, huomaan silti, että käytän SQL * Plus -ohjelmaa moniin nopeisiin ja likaisiin tietokantakyselyihin. Erityisesti etsin usein rajoituksia SQL * Plus -palvelusta. Tässä viestissä tarkastelen Oracle-tietokannanäkymiä ja kyselyjä, joita käytän eniten saadakseni käsityksen siitä, mitä rajoituksia minulla on.

Olen löytänyt kaksi tärkeintä näkymää perustietokantarajoitusten määrittämiseksi: ALL_CONSTRAINTS (USER_CONSTRAINTS) ja ALL_CONS_COLUMNS (tai USER_CONS_COLUMNS). Tässä viestissä tarkastelen joitain kyselyjä, joita haluan käyttää ja jotka hyödyntävät näitä Oracle Data Dictionary -sivuston näkymiä.

ALL_CONSTRAINTS-näkymä on hyvä löytää rajoituksen perustiedot. Seuraava SQL * Plus -katkelma osoittaa tämän olevan käytössä.

displayConstraintInfo.sql

aseta rivikoko 180 aseta tarkista pois hyväksy rajoitusNimi -kehote "Rajoituksen nimi:" VALITA rajoituksen_nimi, rajoituksen_tyyppi, r_rajoituksen_nimi, taulukon_nimi, hakuehto FROM all_constraints WHERE constraint_name = '& rajoitteen nimi'; 

Yllä oleva katkelma pyytää rajoitteen nimeä ja antaa sitten joitain perusominaisuuksia tälle rajoitukselle, jonka KAIKKI RAJOITUKSET näkymä. Yksi näistä ominaisuuksista on CONSTRAINT_TYPE, joka on yksi seuraavista arvoista: 'C' (Tarkista rajoitus), 'P' (Ensisijainen avain), 'R' (Viite- / ulkomaanavain), 'U' (Ainutlaatuinen), 'V' (tarkistusvaihtoehdon ollessa päällä näkymä), 'O' (vain luettavissa näkymässä). Yllä oleva kysely vaatii yhden tuntemaan rajoitteen nimen. Seuraava kysely näyttää samanlaisia ​​tietoja tietyn taulukon rajoituksista.

displayConstraintsOnTable.sql

aseta rivikoko 180 aseta vahvista pois hyväksy tableName-kehote "Taulukon nimi:" SELECT rajoitteen_nimi, rajoituksen_tyyppi, r_constraint_nimi, taulukon_nimi, hakuehto FROM all_constraints WHERE table_name = '& tableName'; 

Yllä oleva kysely tarjoaa tietyn taulukon rajoitukset, mutta on usein hyödyllistä tietää, mitkä taulukon sarakkeet sisältävät rajoituksia. Tämä on helppo tehdä liittymällä ALL_CONS_COLUMNS-näkymään ALL_CONSTRAINTS-näkymään.

displayConstraintsOnTableColumns.sql

aseta rivikoko 180 aseta tarkista pois hyväksy taulukko .taulukon_nimi = '& taulukonNimi' JA c.rajoituksen_nimi = cc. rajoituksen_nimi; 

Toinen hyödyllinen kysely, joka käyttää näitä kahta rajoitukseen liittyvää näkymää, on kysely, joka antaa tietoja viitteellisistä eheysrajoituksista (CONSTRAINT_TYPE / R). Erityisesti tämä yksinkertainen kysely näyttää tietyn taulukon rajoitukset, jotka ovat vieraan avaimen rajoituksia ja mistä ensisijaisen avaimen rajoituksista ne riippuvat.

displayForeignKeyConstraints.sql

aseta rivikoko 180 aseta tarkista pois hyväksy taulukko cf WHERE cp.table_name = '& taulukon nimi' AND cp.constraint_name = ccp.constraint_name AND cf.r_constraint_name = cp.constraint_name AND cf.r_constraint_name = ccp.constraint_name; 

Tässä viestissä olen tiivistänyt joitain hyödyllisiä kyselyjä, jotka voidaan rakentaa Oracle Data Dictionary -näkymistä KAIKKI RAJOITUKSET ja ALL_USER_CONS_COLUMNS.

Alkuperäinen julkaisu on saatavana osoitteessa //marxsoftware.blogspot.com/ (Innoittamana Todelliset tapahtumat)

Tämän tarinan, "Oracle-tietokannan rajoitusten nopea tarkastelu", julkaisi alun perin JavaWorld.