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