ПредишенСледващото

Премахнете тези дубликати може да бъде един SQL-декларация:

Ние няма да се спирам по-нататъшно изпълнение на тази задача, защото не този аспект е обект на тази статия. Освен това, темата на статията дори не е търсенето на дубликати.

Нашият проблем е да се премахнат дублиращите се записи, които са цитирани от други таблици. Сами дублиращи линии са известни предварително.

Много често потребителите не са само няколко пъти влязоха в един и същи запис на масата, но също така имаше няколко пъти, за да се отнасят към него от други таблици, добрата, приложението е позволено. Например, без да виждат, че дадена компания вече присъства в списъка на контрагенти, потребителят го е направил, за да позоваването на контрагента още веднъж с малка грешка в заглавието, така че два коловоза на името не е било възможно. Тогава той започна списък с лица за контакт попълнено името синоними справка на фирмата, както и резервация няколко поръчки. По-късно се оказа, че компанията отдавна работи с компанията, и вече е изпълнила няколко десетки поръчки за нея. И сега ние трябва да се премахне допълнителното директория на фирми записвате предварително превключване всички препратки към него на записа в таблицата, което остава.

Разбира се, като се вземат предвид психологията на потребителя по време на интерфейс за разработка на приложения може да намали размера на заема, но аз не знам абсолютно надежден начин да се предотврати такова поведение на потребителите. Ръчно третиране на проблемите, отнема твърде много ценно време на администратора за кандидатстване.

Ако този проблем се появява по една таблица, можете да напишете запомнена процедура е в съответствие с него, но какво ще стане ако има няколко маси?

Този проблем може да възникне, не се дължи на грешка на потребителя, но, например, при сливането на районите, когато е необходимо всички служители, прехвърлени от една единица в друга.

Така че, опитайте се да се разработи универсален процедура, за да се отстранят всички дублиращи се редове в таблиците, които са упоменати. са наложени следните ограничения за опростяване на проблема:
  1. Всички заявления се съхраняват в една таблица схема; е ние създаваме нашата процедура.
  2. Всички таблици имат целостта ограничения - първични и външни ключове.
  3. Тя използва само прости първични ключове (състоящи се от една колона).

На първо място, извличане на информация от речника на данни като таблица единици пример КАТЕДРИ се нуждаем.

  1. Използването на речника на представителство user_constraints данни, ние откриваме всички външни ключове, позовавайки се на първичен маса ключови отдели:
  2. След това, с помощта на представителството на речника user_cons_columns, ще намерите съответните имена на таблици и колони. По този начин, ние получаваме списък на таблици и колони, чиито стойности трябва да се промени:
  3. Използвайки същите възгледи на речник на данните, ние откриваме, първичен ключ име на колона в таблицата

Познаването на единица идентификатор, който трябва да се остави (correct_id) и ID udyalyaemogo единица (drop_id), ние можем, използвайки имената на външния ключ, получен от второто искане на таблици и колони, генериране на заявка за промяна на чуждестранните ключови ценности. Искането от страна на трето - за да получите SQL - команда за премахването на остарели линии от масата отдели. Но да отидем малко по-нататък, и да се създаде съхранена процедура, която ще бъде достатъчно, за да премине три параметъра - името на таблицата, коригиране и изтриване на основната стойност на ключа, и тя ще направи всичко за нас. За да не се мисли за вида на първичния ключ колона, създаване на две еднакви процедура със същото име, като се използва принципа на претоварване, "мушкам" ги в съхранява пакет и се обадете се удвоява (вж. Приложение 1).

Сега, за да изпълни заповедта на директора на отчитането на сливане (DEPT_ID = 28) и финансовия отдел (DEPT_ID = 101), изпълнете командата:

Приложение 1

Трябва да се разбере, че фрагментирането на масата е различна от файл фрагментация. Когато серия от операции DML на маса, масата е разпокъсан, защото ГСД не освобождава пространство за HWM.HWM - показател за използването (използван БЛОКОВЕ) блокове в базата данни. Блокове, достигащи до това дали.

Преименуване подразбиране Постоянен таблици prostranstvaTablichnoe маса пространство за таблици SYSAUX Composite TempDefault Постоянен TablespaceOracle 9i въведе концепцията на временно пространство за таблици по подразбиране (по подразбиране временно таблици), за да се предотврати случайно.

ALTER TABLE таблица_име ПРОЧЕТЕТЕ САМО; ALTER TABLE таблица_име Прочетете Запис; следния скрипт създава маса, тя попълва с няколко реда, а след това режим ustanavilivaet маса "само за четене" .CREATE TABLE ro_tab (идентификационен номер); вмъкнете в ro_tab СТОЙНОСТИ (1); INSERT INTO ro_tab стойности (2).

Процедурата за създаване на практически не се различава от предишните версии - 9i и 10гр. Създадената база данни ще се използват следните опции: OMF (Oracle Сайтът файл) файлове с данни, лог файлове, повторно изпълнение и контрол на файлове. FRA (Flash Recovery Area) за архивираните файлове или чрез рязане.

Неспособност да се гарантира, че всички изменения на плана винаги ще бъде по-добро, е довело някои клиенти да се гарантира, че се гарантира техните планове за изпълнение (планове се съхраняват) или статистически блок Optimizer. Все пак, ако го направят, ние се лишаваме от възможността за все по-използвани.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!