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