Password Security and Resources
Fundamentals
Indizes
  Contents
  Index
Subsections
Datenintengrität
Constraint Stati
- disable novalidate
Das Constraint wird nicht getestet.
Neue und vorhandene Werte können gegen die Regeln des Constraint verstossen.
- disable validate
Jegliche Änderungen in der Constraint Spalte sind nicht erlaubt.
- enable novalidate
Neue Daten müssen den Constraint-Regeln entsprechen.
Vorhandene Daten werden aber nicht überprüft.
- enable validate
Sowohl neue Daten als auch vorhandene Daten müssen den Constraint-Regeln entsprechen.
Der Primary Key sollte nicht ausgeschaltet werden, da der entsprechende Index gelöscht wird.
alter table bla DISABLE | NOVALIDATE CONSTRAINT ck_bla;
alter table bla ENABLE | NOVALIDATE CONSTRAINT ck_bla;
Dies kann sehr lange dauern, da die gesamte Tabelle überprüft wird.
Gibt es eine Regelverletzung in der Tabelle kommt es zu einer Fehlermeldung und der Befehl kann nicht ausgeführt werden.
Leider werden die Regelverstöße nicht angezeigt.
Exceptions-Tabelle
Die Exceptions-Tabelle zeigt Regelverstöße an.
Erzeugt wird diese mit
/oracle/ora92/rdbms/admin/utlexpt1.sql
-- Inhalt von utlexpt1.sql:
create table exceptions
(
row_id urowid,owner varchar2(30),
table_name varchar2(30),
constraint varchar2(30)
)
;
alter table bla
enable validate constraint ch_bla
exceptions into execeptions
;
Nun werden alle Regelverstöße in die Tabelle execeptions gespeichert.
Verzögerte (deferred) CONSTRAINTs
Die Regelüberprüfung erfolgt erst beim Ende einer Transaktion, z.B. bei COMMIT.
Angabe bei CONSTRAINT-Erstellung.
create table test1 (name varchar2(20)
constraint ch_test1 check (name not in 'Anna')
deferrable initially deferred);
Hier ist die Verzögerung möglich aber am Anfang deaktiviert.
Übungen siehe Seite
.
Password Security and Resources
Fundamentals
Indizes
  Contents
  Index
Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de