Montag, Januar 27, 2014

Noch ein paar nette 12c Features

Julian Dontcheff nennt in seinem Blog zwölf neue Features, die mit 12c verfügbar geworden sind. Die meisten habe ich hier wahrscheinlich schon mal erwähnt, aber sehr interessant finde ich:
  • die Option DISABLE_ARCHIVE_LOGGING mit der man die Erzeugung von redo log Informationen beim Import massiv reduzieren kann (was nach dem Import natürlich ein neues Basis-Backup erforderlich macht).
  • die TRUNCATE CASCADE Option, die für alle über referentielle Constraints verbundenen Child-Tabellen ein Truncate ausführt, wenn die Parent-Tabelle truncated wird.
Dabei räumt TRUNCATE CASCADE die abhängigen Tabellen komplett leer, führt also tatsächlich auch dort ein Truncate und kein Delete durch, wie das folgende Beispiel zeigt:

drop table t_c;
drop table t_p;

create table t_p (id number primary key);

create table t_c (id number primary key, p_id number);

alter table t_c add constraint t_c_p_fk foreign key (p_id) references t_p(id) on delete cascade;

insert into t_p (id) values (1);

insert into t_c (id, p_id) values (1, 1);

insert into t_c (id, p_id) values (2, null);

commit;

select * from t_c;

        ID       P_ID
---------- ----------
         1          1
         2

truncate table t_p cascade;

select * from t_c;

Es wurden keine Zeilen ausgewählt

Hier verschwindet auch der Datensatz mit der Id 2 aus der Child-Tabelle t_c, obwohl er für die FK-Spalte einen NULL-Wert enthält. Jenseits der Inhalte lässt sich das Verhalten auch daran erkennen, dass die DATA_OBJECT_ID der Tabelle in USER_OBJECTS erhöht wird.

Keine Kommentare:

Kommentar veröffentlichen