Was ist ein eindeutiger Schlüssel
Eindeutiger Schlüssel in Oracle Identifiziert jede Zeile in der Datenbank eindeutig. Es erzwingt im Wesentlichen die Eindeutigkeit der definierten Spalte
Wichtige Dinge
- Es kann mehr als einen eindeutigen Schlüssel pro Tabelle geben
- Es kann für eine oder mehrere Spalten definiert werden
- Spalten mit eindeutigem Schlüssel können nullfähig sein
So erstellen Sie den eindeutigen Schlüssel
Tabellenerstellung
Dies kann auf Spaltenebene mit dem Befehl create table in Oracle
erfolgenSQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER UNIQUE, dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> column CONSTRAINT_NAME format a20 SQL> column TABLE_NAME format a20 SQL> column INDEX_NAME format a20 SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME, INDEX_NAME from user_Constraints where TABLE_NAME='DEPT_MASTER';
Dies kann auch auf Tabellenebene erfolgen
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date, Unique(dept_nr) ); Table created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME, INDEX_NAME from user_Constraints where TABLE_NAME='DEPT_MASTER';
Wir können auch die benutzerdefinierte Einschränkung bereitstellen
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER , dept_name varchar2(100) NOT NULL, dept_status NUMBER(1,0) NOT NULL, created_at date, constraint DEPT_UK Unique(dept_nr) ); Table created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME, INDEX_NAME from user_Constraints where TABLE_NAME='DEPT_MASTER';
Wir können den eindeutigen Schlüssel mit dem folgenden Diagramm darstellen
Wir können auch mehrere Spalten haben, d. h. zusammengesetzte eindeutige Schlüssel, und sie werden nur auf Tabellenebene definiert
CREATE TABLE CUSTOMER_DETAIL ( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), SALARY NUMBER(6,0), UNIQUE(CUSTOMER_ID, NAME) ); Table Created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE, TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='CUSTOMER_DETAIL';
Wir können auch einen benutzerdefinierten Constraint-Namen geben
SQL> CREATE TABLE CUSTOMER_DETAIL( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), SALARY NUMBER(6,0), constraint CUSTOMER_UK UNIQUE(CUSTOMER_ID, NAME) ); Table created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE, TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='CUSTOMER_DETAIL';
Ändern Sie die Tabelle und fügen Sie einen eindeutigen Schlüssel hinzu
Wir können auch einen eindeutigen Schlüssel nach der Tabellenerstellung hinzufügen. Sehen wir uns das Beispiel dafür an
SQL> CREATE TABLE CUSTOMER_DETAIL( CUSTOMER_ID NUMBER(6,0), NAME VARCHAR (20) NOT NULL, AGE NUMBER(6,0) NOT NULL, ADDRESS VARCHAR2(25), SALARY NUMBER(6,0) ); Table created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE, TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='CUSTOMER_DETAIL';
SQL> alter table customer_detail add constraint customer_uk UNIQUE(CUSTOMER_ID, NAME); Table altered. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='CUSTOMER_DETAIL';
Primärschlüssel und eindeutiger Schlüssel beide
Wir können sowohl den Primärschlüssel als auch den eindeutigen Schlüssel in der Orakeltabelle haben. Hier ist das Beispiel, das dies demonstriert
SQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER PRIMARY KEY, dept_name varchar2(100) UNIQUE, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> select CONSTRAINT_NAME,CONSTRAINT_TYPE, TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='DEPT_MASTER';
So finden Sie die mit dem eindeutigen Schlüssel verknüpfte Spalte
Wir können die Spalte, die dem Primärschlüssel oder dem eindeutigen Schlüssel zugeordnet ist, in der Wörterbuchansicht User_cons_columns
findenSQL> CREATE TABLE DEPT_MASTER ( dept_nr NUMBER PRIMARY KEY, dept_name varchar2(100) UNIQUE, dept_status NUMBER(1,0) NOT NULL, created_at date ); Table created. SQL> select CONSTRAINT_NAME, CONSTRAINT_TYPE,TABLE_NAME,INDEX_NAME from user_Constraints where TABLE_NAME='DEPT_MASTER';
SQL> SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540915'; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME -------------------- ----------- ------------ SYS_C00540915 DEPT_MASTER DEPT_NAME SQL> SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540914'; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------- --------- --------- SYS_C00540914 DEPT_MASTER DEPT_NR SQL> SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns where CONSTRAINT_NAME ='SYS_C00540918'; CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------- ---------- ------------ SYS_C00540918 CUSTOMER_DETAIL CUSTOMER_ID SYS_C00540918 CUSTOMER_DETAIL NAME
So aktivieren und deaktivieren Sie die Einschränkung für eindeutige Schlüssel
Wir können dies mit dem Befehl alter table tun. Wir können entweder den Spaltennamen oder den Constraint-Namen angeben
SQL> alter table customer_detail disable UNIQUE(CUSTOMER_ID, NAME); Table altered. SQL> alter table customer_detail disable constraint CUST_UK; Table altered. SQL> alter table customer_detail enable UNIQUE(CUSTOMER_ID, NAME); Table altered. SQL> alter table customer_detail enable constraint CUST_UK; Table altered.
So löschen Sie die Eindeutigkeitsbeschränkung
Wir können dies mit dem Befehl alter table tun. Wir können entweder den Spaltennamen oder den Einschränkungsnamen
angebenSQL> alter table customer_detail drop UNIQUE(CUSTOMER_ID, NAME); Table altered. OR SQL> alter table customer_detail drop constraint CUST_UK; Table altered.
Ich hoffe, Ihnen gefällt dieses Detail zum eindeutigen Schlüssel in Oracle. Wir haben auch genügend Beispiele für Demonstrationszwecke gegeben. Bitte geben Sie Feedback dazu
Liest auch
Tutorials zur Verwaltung von Oracle-Datenbanken
So fügen Sie Primärschlüssel in Oracle hinzu:Der Primärschlüssel identifiziert die Zeile in der Tabelle eindeutig. So fügen Sie den Primärschlüssel in Oracle hinzu, wie löschen Sie den Primärschlüssel, wie erstellen Sie einen zusammengesetzten Schlüssel
https://asktom.oracle.com/pls/asktom/f%3Fp%3D100:11:0::::P11_QUESTION_ID:5541352100346689891