Eltávolításának problémája ismétli az oracle asztal - az egészet, és a programozás
Távolítsuk el a másolatok egyike lehet SQL-nyilatkozata:
Mi nem megy tovább ezt a feladatot, mert nem ez a szempont a téma ezt a cikket. Sőt, a téma a cikk nem is a keresést ismétli.
A probléma az, hogy távolítsa el ismétlődő rekordok, amelyek hivatkoznak más táblákból. Sami duplikált sorok előre ismert.
Nagyon gyakran a felhasználók nem csak néhány alkalommal lépett az azonos rekord az asztalra, hanem a már többször hivatkoznak rá más táblákból, a jó, az alkalmazás megengedett. Például nem látta, hogy egy bizonyos cég már jelen van a listán az ügyfelek, a felhasználó tette, hogy a másik fél referencia még egyszer egy kis hiba a címben, így a kétvágányú a nevet nem lehetséges. Aztán elkezdett a kapcsolattartók listáját személy töltötte a referencia cégnév szinonimák, és lefoglalt egy pár megrendeléseket. Később kiderült, hogy a cég már régóta dolgozott a társaság, és a már végrehajtott több tucat megrendelést neki. És most el kell távolítani az extra könyvtár vállalatok felvétel előtti váltás minden utalást a lemezre a táblázatban, ami megmarad.
Természetesen figyelembe véve a pszichológia a felhasználói alkalmazás fejlesztése során felület csökkenti a tart, de nem tudom, teljesen megbízható módon, hogy megakadályozzák az ilyen felhasználói viselkedés. Manuális kezelés a problémák túl sok értékes időt az alkalmazás adminisztrátor.
Ha ez a probléma jelentkezik egy asztal, akkor írj egy tárolt eljárás alatt, de mi van, ha több táblát?
Ez a probléma akkor fordulhat elő, nem a felhasználói hiba, de például a torkolatánál megosztottság szükség esetén a személyzet át az egyik egységből a másikba.
Tehát, próbáljuk fejleszteni egy univerzális eljárás, hogy távolítsa el ismétlődő sorokat a hivatkozott táblákból. A következő korlátozások egyszerűsíteni a problémát:- Minden alkalmazás tárolja egy asztalnál séma; ez mi teremtjük eljárást.
- Minden táblázatok integritási kényszerek - elsődleges és idegen kulcsok.
- Csak olyan egyszerű elsődleges kulcsok (amely egyetlen oszlop).
Először is, bontsa ki a szükséges információt a adatszótárban példaként TANSZÉKEK asztal egység.
- Az ábrázolás user_constraints adatszótárhoz, azt találjuk, minden idegen kulcsok hivatkozik az elsődleges kulcs TANSZÉKEK táblázat:
- Ezután, a képviselet a szótárban user_cons_columns kell találni a megfelelő táblázatot és az oszlop nevek. Így kap egy listát a táblák és oszlopok, amelyek értékét meg kell változtatni:
- Ugyanezzel adatnézetekben szótárban találunk az elsődleges kulcs oszlop neve a táblázatban
Ismerve az azonosító egység, amely kell bízni (correct_id) és ID udyalyaemogo egység (drop_id), akkor, a táblázat és az oszlop nevét az idegen kulcs származó második kérelmet generál megváltoztatására irányuló kérelmet az idegen kulcs értékek. A kérelmet a harmadik -, hogy az SQL - parancs eltávolítása elavult vezetékek a megyék asztalra. De megyünk egy kicsit tovább, és hozzon létre egy tárolt eljárást, amely elegendő ahhoz, hogy adja át a három paraméter - a tábla nevét, pontos és törli az elsődleges kulcs érték, és mindent meg fog tenni nekünk. Annak érdekében, hogy ne gondolj csak az elsődleges kulcs oszlop, hozzon létre két azonos eljárással, az azonos nevű, elvét alkalmazó túlterhelés „piszkálni” őket egy tárolt csomagot, és hívja meg a páros (lásd. 1. függelék).
Most, hogy végre a sorrendben az igazgató az egyesülés számviteli (DEPT_ID = 28) és a pénzügyi osztály (DEPT_ID = 101), hajtsa végre a parancsot:
1. függelék
Meg kell érteni, hogy a töredezettség a tábla eltér fájlok töredezettsége. Ha egy sorozat DML műveletek az asztalon, az asztal töredezett, mert DML nem mentesíti helyet HWM.HWM - jelzi a felhasználás (használt blokkok) blokkolja az adatbázisban. Blocks elérte-e.
Átnevezése Alapértelmezett Állandó Tablespace prostranstvaTablichnoe táblaterülethez SYSAUX tablespace Composite TempDefault Állandó TablespaceOracle 9i bevezette ideiglenes tábla teret az alapértelmezett (alapértelmezett ideiglenes TABLESPACE), hogy megakadályozza a véletlen.
ALTER TABLE táblanév read only ALTER TABLE táblanév olvasni írni; A következő script létrehoz egy táblázatot, feltölti azt a néhány sort, majd ustanavilivaet tábla mód "read-only" .CREATE TABLE ro_tab (azonosítója); INSERT INTO ro_tab értékek (1); INSERT INTO ro_tab ÉRTÉKEK (2).
Az eljárás létrehozására gyakorlatilag nem különbözik a korábbi verziók - 9i és 10g. A létrehozott adatbázis az alábbi lehetőségek közül: OMF (Oracle Managed File) adatfájlok, log fájlokat, újra a teljesítmény és kontroll fájlokat. FRA (Flash Recovery Area) archivált naplók vagy vágott.
Képtelenség, hogy minden terv változások mindig a jobb, vezetett egyes ügyfelek, hogy biztosítsa a tervek (tervek vannak tárolva), vagy blokk optimalizáló statisztika. Azonban, ha így tesz, akkor akkor megfosztjuk magunkat attól a lehetőségtől, hogy valaha használt.