Die Einschränkungen von Oracle bestehen hauptsächlich darin, die Datenintegrität auf der Ebene der Geschäftslogik aufrechtzuerhalten. Hauptsächlich durch Programmierer, die Einschränkungen in der Anwendung festlegen oder Trigger definieren, um die Datenintegrität aufrechtzuerhalten, und schließlich durch die Verwendung von Oracles eigenen Einschränkungen, um die Datenintegrität aufrechtzuerhalten. Wenn Sie Oracles eigene Einschränkungen verwenden können, um die Anforderungen zu erfüllen, versuchen Sie, Oracles eigene Einschränkungen zu verwenden, da die Verwendung benutzerdefinierter Einschränkungen wie Trigger die Leistung der Datenbank beeinträchtigt. Beispiel: Bei der Verwendung von Triggern wird die Tabelle gesperrt und es werden Tabellenscans oder Indexscans durchgeführt, was die Datenbankleistung und Parallelität verringert.
Oracle-Einschränkungen werden hauptsächlich in die folgenden Typen unterteilt:
nicht null Nicht-Null-Einschränkung, eindeutige eindeutige Einschränkung, Primärschlüssel-Primärschlüssel-Einschränkung, Fremdschlüssel-Fremdschlüssel-Einschränkung, Prüfeinschränkung.
nicht null Nicht-Null-Einschränkung:
Erstellungsmethode: 1. Definieren Sie beim Erstellen der Tabelle auf Spaltenebene (dh Sie können beim Definieren der Tabelle nur die Definition der Einschränkung nach der Spalte schreiben), 2 Methoden. Einer verwendet benutzerdefinierte Einschränkungsnamen und der andere Systemstandardnamen.
Klartext in Zwischenablage anzeigen und drucken?
Tabelle t erstellen
(
TID-Nummer (8) Einschränkung NK_t1 nicht null,
tname varchar2(10) nicht null
)
Tabelle t erstellen
(
TID-Nummer (8) Einschränkung NK_t1 nicht null,
tname varchar2(10) nicht null
)
Klartext in Zwischenablage anzeigen und drucken?
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
NK_T1 T AKTIVIERT, NICHT VERSCHIEBBAR
SYS_C003735 T AKTIVIERT, NICHT AUFSCHIEBBAR
SQL>
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
NK_T1 T AKTIVIERT, NICHT VERSCHIEBBAR
SYS_C003735 T AKTIVIERT, NICHT AUFSCHIEBBAR
SQL>
2. Ändern Sie die Tabelle nach der Erstellung, stellen Sie jedoch sicher, dass die Daten in der Tabelle keine Einschränkungen verletzen.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabelle ändern, TID ändern, nicht null;
Tabelle geändert
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
SYS_C003736 T AKTIVIERT, NICHT AUFSCHIEBBAR
SQL>
SQL> Tabelle ändern, TID ändern, nicht null;
Tabelle geändert
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
SYS_C003736 T AKTIVIERT, NICHT AUFSCHIEBBAR
SQL>
Überprüfen Sie die Einschränkungen
Erstellungsmethode: Sie kann auf Tabellenebene und Spaltenebene definiert werden (sie kann nach der Spalte oder nach der Definition der Spalte definiert werden). Es gibt auch 2 Arten der Definition.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabelle t erstellen
2 (
3 TID-Nummer(8) ,
4 tname varchar2(10),
5 Einschränkung CK_T1-Prüfung ((tid ist nicht null) und (tid > 0))
6)
7/
Tabelle erstellt
SQL> Tabelle ändern t Einschränkung hinzufügen CK_T2 check(tname ist nicht null);
Tabelle geändert
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
CK_T1 T AKTIVIERT, NICHT VERSCHIEBBAR
CK_T2 T AKTIVIERT, NICHT VERSCHIEBBAR
SQL>
SQL> Tabelle t erstellen
2 (
3 TID-Nummer(8) ,
4 tname varchar2(10),
5 Einschränkung CK_T1-Prüfung ((tid ist nicht null) und (tid > 0))
6)
7/
Tabelle erstellt
SQL> Tabelle ändern t Einschränkung hinzufügen CK_T2 check(tname ist nicht null);
Tabelle geändert
SQL> wähle t.constraint_name, t.table_name, t.status, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS AUFSCHIEBBAR
-------------------------------------------------- ------ ----------------
CK_T1 T AKTIVIERT, NICHT VERSCHIEBBAR
CK_T2 T AKTIVIERT, NICHT VERSCHIEBBAR
SQL>
Die Einschränkung CK_T1 stellt sicher, dass die tid-Spalte nicht leer sein darf und größer als 0 ist, und CK_T2 stellt sicher, dass iname nicht leer sein darf. Check-Constraints können auch Regeln zwischen verschiedenen Spalten derselben Zeile sein.
eindeutige Einschränkung
Erstellungsmethode: Wenn eine eindeutige Spalte nur eine Spalte enthält, kann sie auf Spaltenebene definiert werden. Wenn eine eindeutige Spalte mehrere Spalten enthält, kann sie nur auf Tabellenebene definiert werden.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 unique(vname,vsex)
7)
8/
Tabelle erstellt
SQL> wähle t.constraint_name, t.table_name, t.status, t.validated, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS VALIDATED AUFSCHIEBBAR
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 AKTIVIERT VALIDIERT NICHT AUFSCHIEBBAR
VK_T2 T2 AKTIVIERT VALIDIERT NICHT AUFSCHIEBBAR
SQL>
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 unique(vname,vsex)
7)
8/
Tabelle erstellt
SQL> wähle t.constraint_name, t.table_name, t.status, t.validated, t.deferrable aus user_constraints t;
CONSTRAINT_NAME TABLE_NAME STATUS VALIDATED AUFSCHIEBBAR
--------------- ---------- -------- ---------- ------- -------
VK_T1 T2 AKTIVIERT VALIDIERT NICHT AUFSCHIEBBAR
VK_T2 T2 AKTIVIERT VALIDIERT NICHT AUFSCHIEBBAR
SQL>
Wenn die eindeutige Einschränkung erstellt wird, wird ein Index generiert (es kann sich um einen eindeutigen Index oder um einen nicht eindeutigen Index handeln, abhängig davon, ob die Tabelle beim Erstellen angegeben wurde, um die Dateneinschränkungen sofort zu überprüfen, wenn die Tabelle erstellt wird). Daten werden eingefügt):
Klartext in Zwischenablage anzeigen und drucken?
SQL> wähle t.index_name, t.table_name, t.uniqueness aus user_indexes t;
INDEX_NAME TABLE_NAME EINZIGARTIGKEIT
---------- ---------- ----------
VK_T1 T2 EINZIGARTIG
VK_T2 T2 EINZIGARTIG
SQL> wähle t.index_name, t.table_name, t.uniqueness aus user_indexes t;
INDEX_NAME TABLE_NAME EINZIGARTIGKEIT
---------- ---------- ----------
VK_T1 T2 EINZIGARTIG
VK_T2 T2 EINZIGARTIG
Da ein Index vorhanden ist, können Sie beim Erstellen der Tabelle den Speicherort des Index und einige Speicherparameter angeben.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 unique(vname,vsex) unter Verwendung des Indextabellenbereichs indx
7 Speicher (anfängliche 100.000, nächste 100.000 Stück, Erhöhung um 0)
8 Nologging
9)
10/
Tabelle erstellt
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 unique(vname,vsex) unter Verwendung des Indextabellenbereichs indx
7 Speicher (anfängliche 100.000, nächste 100.000 Stück, Erhöhung um 0)
8 Nologging
9)
10/
Tabelle erstellt
Der Tabellenbereich, in dem der eingeschränkte Index gespeichert ist, ist der Index-Tabellenbereich, die anfängliche Blockgröße beträgt 100 KB und es werden keine Protokolle für DML-Vorgänge generiert (Protokolle werden jedoch auch aus anderen Gründen generiert, es gibt jedoch weniger Protokolle als die Standardprotokollierung).
Primärschlüssel-Primärschlüssel-Einschränkung
Erstellungsmethode: Der Primärschlüssel besteht hauptsächlich aus Nicht-Null und Eindeutigkeit. Eine Tabelle kann nur einen Primärschlüssel enthalten, ein Primärschlüssel kann jedoch mehrere Spalten enthalten.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 Primärschlüssel (vname, vsex) unter Verwendung des Indextabellenbereichs indx
7 Speicher (anfängliche 100.000, nächste 100.000 Stück, Erhöhung um 0)
8 Nologging
9)
10/
Tabelle erstellt
SQL> Tabelle t2 erstellen
2 (
3-Video-Nummernbeschränkung VK_T1 eindeutig,
4 vname varchar2(10),
5 vsex varchar2(10),
6 Einschränkung VK_T2 Primärschlüssel (vname, vsex) unter Verwendung des Indextabellenbereichs indx
7 Speicher (anfängliche 100.000, nächste 100.000 Stück, Erhöhung um 0)
8 Nologging
9)
10/
Tabelle erstellt
Fremdschlüssel Fremdschlüssel
Erstellungsmethode: Die am Fremdschlüssel beteiligten Tabellen können zwei oder eine Tabelle haben. Bei zwei Tabellen muss der Schlüssel, auf den ein Feld in einer untergeordneten Tabelle verweist, der Primärschlüssel in der dickeren Tabelle sein. Die Einschränkung wird in der untergeordneten Tabelle festgelegt und gibt an, dass der Wert im Feld in der Tabelle in der übergeordneten Tabelle vorhanden sein oder ein NULL-Wert sein muss.
Klartext in Zwischenablage anzeigen und drucken?
SQL> Tabellenabteilung erstellen
2 (
3 hat Nummer(8),
4 dname varchar2(20),
5 Einschränkung PK_DEPT Primärschlüssel (hat)
6)
7/
Tabelle erstellt
SQL>
SQL> Tabelle emp erstellen
2 (
3 Primärschlüssel der EID-Nummer (8),
4 varchar2(20) umbenennen,
5 did number(8) /*references dept(did)*/,
6 dname varchar2(20),
7 Einschränkung FK_EMP2 Fremdschlüssel(did) verweist auf dept(did)
8)
9/
Tabelle erstellt
SQL> Tabellenabteilung erstellen
2 (
3 hat Nummer(8),
4 dname varchar2(20),
5 Einschränkung PK_DEPT Primärschlüssel (hat)
6)
7/
Tabelle erstellt
SQL>
SQL> Tabelle emp erstellen
2 (
3 Primärschlüssel der EID-Nummer (8),
4 varchar2(20) umbenennen,
5 did number(8) /*references dept(did)*/,
6 dname varchar2(20),
7 Einschränkung FK_EMP2 Fremdschlüssel(did) verweist auf dept(did)
8)
9/
Tabelle erstellt
Da der Fremdschlüssel (Fremdschlüssel) durch den Referenzschlüssel (Referenzschlüssel) bestimmt wird, gibt es Einschränkungen beim Ausführen von Aktualisierungs-, Lösch-, Lösch- und anderen Vorgängen für die Fater-Tabelle. Insbesondere wird es durch den Status der Fremdschlüsseleinschränkungen bestimmt.
Bei Aktion löschen, Kaskade löschen, Null löschen
Bei Aktion löschen ist die Standardeinstellung. Wenn Sie die Daten in der übergeordneten Tabelle löschen, sperrt Oracle die Worttabelle und scannt dann die Tabelle (wenn eine Fremdschlüsselspalte vorhanden ist, scannen Sie den Index), und die Daten sind dann nicht mehr vorhanden Die Fremdschlüsselspalte in der untergeordneten Tabelle ist zulässig.
delete cascade löscht auch die entsprechende Zeile in der Worttabelle.
Wenn Sie den Satz null löschen, werden die Daten, die der Fremdschlüsselspalte in der Balkentabelle entsprechen, NULL.
Klartext in Zwischenablage anzeigen und drucken?
Tabelle erstellen Emp
(
EID-Nummer (8) Primärschlüssel,
varchar2(20) umbenennen,
did number(8) /*references dept(did)*/,
dname varchar2(20),
Einschränkung FK_EMP2 Fremdschlüssel (did) verweist auf dept(did) beim Löschen von Null
)
Tabelle erstellen emp
(
EID-Nummer (8) Primärschlüssel,
varchar2(20) umbenennen,
did number(8) /*references dept(did)*/,
dname varchar2(20),
Einschränkung FK_EMP2 Fremdschlüssel (did) verweist auf dept(did) beim Löschen von Null
)