Domov Vymazanie dát alebo celej relačnej databázy
Príspevok
Zrušiť

Vymazanie dát alebo celej relačnej databázy

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.

Tento príspevok je licencovaný pod CC BY 4.0 autorom.