Vymazanie celej tabuľky
Ak sa pri modelovaní alebo vkladaní dát vyskytla chyba, budeme musieť vymazať tabuľky alebo údaje z tabuliek. Pre vymazanie celej tabuľky môžeme použiť
1
DROP TABLE table_name;
respektíve (ak dáta z table_name sú používané ako cudzí kľúč v inej tabuľke)
1
DROP TABLE table_name CASCADE CONSTRAINTS;
Ak máme tabuľky pomenované rovnakým prefixom napr. MIS_ môžeme si vytvoriť procedúru na vymazanie týchto tabuliek.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BEGIN
FOR rec IN
(
SELECT
table_name
FROM
all_tables
WHERE
table_name LIKE 'MIS_%'
)
LOOP
EXECUTE immediate 'DROP TABLE '||rec.table_name || '
CASCADE CONSTRAINTS';
END LOOP;
END;
/
Vymazanie údajov v tabuľke
Pre vymazanie malého množstva údajov alebo s použitím WHERE môžeme použiť
1
DELETE FROM table_name;
alebo pre väčšie množstvo údajov
1
TRUNCATE TABLE table_name;
Ďalšie užitočné informácie
Ak sa pri definícií tabuliek použila vlastnosť ON DELETE CASCADE
tak na koniec príkazu TRUNCATE napíšeme CASCADE. Bez použitia CASCADE dostaneme chybu
1
2
SQL Error: ORA-02266: unique/primary keys in table referenced by
enabled foreign keys
Po použití DELETE, máme možnosť vrátiť zmeny pomocou ROLLBACK
. Pre použitie ROLLBACK sa na pozadí vytvára LOG s údajmi, proces mazania je preto zdĺhavý. Pre permanentné vymazanie záznamov musíme použiť COMMIT
.
Po použití TRUNCATE, nemusíme ukladať zmeny cez COMMIT, zmeny sa uložia automaticky, ale strácame možnosť vrátiť zmeny cez ROLLBACK.
Vkladanie dát cez INSERT
Pre manuálne vkladanie údajov použijeme
1
INSERT INTO table_name (column_list) VALUES( value_list);
Po vložení dát musíme manuálne uložiť zmeny pomocou
1
COMMIT;
Ak pri vkladaní dát uprednostníme tabuľku faktov dostaneme chybu
ORA-02291 (narušené referenčné obmedzenie)
. To znamená, že sme sa pokúsili vložiť dáta do takej tabuľky, ktorá sa odkazuje na cudzí kľúč z druhej tabuľky. Ale v druhej tabuľke nie je taký primárny kľúč s konkrétnou hodnotou. Najprv musíme importovať dáta do tých tabuliek, ktoré majú len primárne kľúče a následne až do tých, ktoré sa odkazujú na iné tabuľky pomocou cudzích kľúčov.