Programavimas

Greitai peržiūrimi „Oracle“ duomenų bazių apribojimai

Dirbdamas su „Oracle“ duomenų baze vis dar naudoju SQL * Plus daugeliui greitų ir nešvarių duomenų bazių užklausų. Ypač dažnai ieškau apribojimų sistemoje „SQL * Plus“. Šiame įraše apžvelgiu „Oracle“ duomenų bazės peržiūras ir užklausas, kurias labiausiai naudoju, kad suprastų, su kokiais apribojimais susiduriu.

Radau dvi svarbiausias peržiūras nustatant pagrindinius duomenų bazės apribojimus: ALL_CONSTRAINTS (USER_CONSTRAINTS) ir ALL_CONS_COLUMNS (arba USER_CONS_COLUMNS). Šiame įraše apžvelgiu kai kurias užklausas, kurias norėčiau naudoti ir kurios naudojasi šiomis „Oracle Data Dictionary“ peržiūromis.

ALL_CONSTRAINTS rodinys puikiai tinka norint rasti išsamią suvaržymo informaciją. Kitas SQL * Plus fragmentas rodo, kad tai naudojama.

displayConstraintInfo.sql

nustatyti linijos dydį 180 nustatyti patikrinti išjungti priimti apribojimąName eilutė "Apribojimo pavadinimas:" PASIRINKTI apribojimo_vardas, suvaržymo_tipas, r_priekabos_pavadinimas, lentelės_vardas, paieškos_sąlyga FROM all_constraints WHERE apribojimas_pavadinimas = '& suvaržymoVardas'; 

Pirmiau pateiktas fragmentas paragins įvesti apribojimo pavadinimą ir tada pateiks kai kurias pagrindines to apribojimo, kurį teikia ALL_CONSTRASTTS vaizdas. Viena iš šių savybių yra CONSTRAINT_TYPE, kuri yra viena iš šių reikšmių: „C“ (tikrinimo apribojimas), „P“ (pagrindinis raktas), „R“ (nuorodinis / užsienio raktas), „U“ (unikalus), „V“ (su pažymėta parinktimi) rodinys), „O“ (tik skaityti rodinyje). Pirmiau pateiktai užklausai reikia žinoti, kad būtų suvaržymo pavadinimas. Kitoje užklausoje bus rodoma panaši informacija apie tam tikros lentelės apribojimus.

displayConstraintsOnTable.sql

nustatyti linijos dydį 180 nustatyti patikrinti išjungti priimti tableName eilutę "Lentelės pavadinimas:" PASIRINKTI apribojimo_pavadinimas, apribojimo_tipas, r_constraint_name, lentelės_vardas, paieškos_sąlyga FROM all_constraints WHERE table_name = '& stalo pavadinimas "; 

Pirmiau pateiktoje užklausoje pateikiami tam tikros lentelės apribojimai, tačiau dažnai naudinga žinoti, kuriuose lentelės stulpeliuose yra apribojimų. Tai lengva padaryti prijungus rodinį ALL_CONS_COLUMNS prie ALL_CONSTRAINTS rodinio.

displayConstraintsOnTableColumns.sql

nustatyti linijos dydį 180 nustatyti patikrinti išjungti priimti lentelęPavadinimo eilutė „Lentelės pavadinimas:“ PASIRINKTI c.constraint_name, c.constraint_type, c.r_constraint_name, c.table_name, cc.column_name, cc.position, c.search_condition FROM all_constraints c, all_cons_columns cc WHERE c .table_name = '& tableName' IR c.constraint_name = cc.constraint_name; 

Kita naudinga užklausa, naudojant šiuos du su apribojimais susijusius rodinius, yra ta, kuri pateikia informaciją apie referencinio vientisumo apribojimus (CONSTRAINT_TYPE apie R). Visų pirma, ši paprasta užklausa rodo nurodytos lentelės apribojimus, kurie yra užsienio rakto apribojimai ir nuo kurių pirminio rakto apribojimų jie priklauso.

displayForeignKeyConstraints.sql

nustatyti linijos dydį 180 nustatyti patikrinti išjungti priimti lentelęPavadinimo eilutė "Lentelės pavadinimas:" PASIRINKTI cf.constraint_name "UŽSIENIO RAKTAS", cp.constraint_name "PRIKLAUSOMA", cp.table_name, ccp.column_name, ccp.position FROM all_constraints cp, all_cons_columns ccp, all_cons_columns ccp, all_cons_columns ccp, all cf WHERE cp.table_name = '& tableName' IR cp.constraint_name = ccp.constraint_name AND cf.r_constraint_name = cp.constraint_name AND cf.r_constraint_name = ccp.constraint_name; 

Šiame įraše aš apibendrinau keletą naudingų klausimų, kuriuos galima sukurti iš „Oracle Data Dictionary“ rodinių ALL_CONSTRASTTS ir ALL_USER_CONS_COLUMNS.

Originalų skelbimą galima rasti adresu //marxsoftware.blogspot.com/ (įkvėpta faktinių įvykių)

Šią istoriją „Greitai peržiūrėdami„ Oracle “duomenų bazės apribojimus“ iš pradžių paskelbė „JavaWorld“.