Klucz obcy odwołujący się do tej samej tabeli

Co zrobić w sytuacji gdy w tabeli Pracownicy masz mieć zawartą informacje o przełożonym tej osoby? Przeciez przełożony jest też pracownikiem. Nie trzeba tworzyć zawiłych redundatnych konstrukcji, z pomocą przychodzi rekurencja – możemy odwołać się do tej samej encji.

Analiza relacji tabel

Mały tool wyświetlający referencje do podrzędneych tabelu.  Select wykonany w Developerze wyświetli okienko wprowadzenia zmiennej (‚&tableOfInterest’) dla nazwy tabeli parent. Przydatny do szukania relacji, analizy struktury bazy.
Szybsza opcja niz szukanie w GUI po foreign key, ale raczej do wspomagania niz jako substytut Data Modelera 🙂

1. Mamy FK sprawdzmy do których PK odwoluja sie:

2. I odwrotnie. Mamy PK i chemy znalezc tabele, ktore sie do niego odwoluja.

Klucze główne w Oracle, autoinkrementacja oraz funkcja sys_guid

W odróżnieniu od innych baz, w Oraclu do wersji 11g, do tworzenia inkrementacji klucza głównego nie mogliśmy użyć zwyczajnie autonumeracji jak na poniższym przykładzie w MySQL

Zamiast tego trzeba było stosować wyzwalacz, który pobierał wartość z sekwencji.

Lata pózniej w wersji 12c wprowadzono możliwość określenia takiej właściwości przy tworzeniu tabeli, w prostszy sposób.

Funkcja sys_guid.

W niektórych przypadkach przydatna może być funkcja sys_guid generująca i zwracająca globalny, unikalny ID (RAW, do 16 bajtów). Składa się z id hosta, procesu lub id wątku oraz niepowtarzalnej wartości. Nie jest to inkrementacja tzn. nie są to kolejne „user-friendly” liczby, a wartości heksadecymalne (vide wynik przykładu 1. poniżej). Poza tym może być używana jako wartość domyślna w CREATE TABLE (DEFAULT)

 

Przykłady sys_guid():
1. Aktualizacja kolumny.

Wynik:

UID_COL
—————————————-
7CD5B7769DF75CEFE034080020825436
7CD5B7769DF85CEFE034080020825436
7CD5B7769DF95CEFE034080020825436
7CD5B7769DFA5CEFE034080020825436

2. Zastosowanie przy uzyciu wyzwalacza

Oracle Apex 5: odblokowanie admina bez @apxchpwd

Uruchamiamy SQLPLUS as sysdba.
1. Sprawdzamy id:

2. Zmieniamy hasło.

3. Odblokowujemy konto.

SQLPLUS: Command not found

Przyczyną może być brak ustawionych zmienych.

Kopiujemy je z instalacji Oracle za pomocą…

lub
Uruchamiamy narzedzie:
/usr/bin/oraenv
Ewentualnie: