sql >> Databáze >  >> RDS >> Oracle

Jaký je výchozí název omezení v Oracle?

Problém:

Chcete znát výchozí názvy omezení v tabulce v Oracle.

Příklad:

V naší databázi vytvoříme dvě tabulky, country a student , s následujícími omezeními:PRIMARY KEY (ID sloupce v tabulkách country a student ), FOREIGN KEY (sloupec country_id v tabulce student ), DEFAULT (sloupec name v tabulce student ), UNIQUE (sloupec name v tabulce country a sloupec personal_number v tabulce student ) a CHECK (sloupec age v tabulce student ).

Řešení:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) DEFAULT 'UNKNOWN',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) references country(id)
);

Ukážeme si, jak Oracle standardně pojmenovává omezení těchto tabulek. Chcete-li je zobrazit, použijte tento dotaz:

select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
from USER_CONSTRAINTS
where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';

Zde je výsledek:

CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
SYS_C007376 R STUDENT
SYS_C007366 P ZEMĚ
SYS_C007374 P STUDENT
SYS_C007367 U ZEMĚ
SYS_C007375 U STUDENT
SYS_C007372 C STUDENT

Diskuse:

Když vytváříme naše tabulky, nastavujeme omezení pro některé sloupce. Neuvádíme však názvy těchto omezení, takže jsou pojmenovány ve výchozím nastavení. Jak se generují výchozí názvy pro omezení?

V Oracle začíná výchozí název omezení uživatelským jménem, ​​po kterém následuje „_C “ a pořadové číslo. Typy omezení jsou „C “ (check ), „P “ (primární klíč), „U “ (jedinečné omezení) a „R ' (cizí klíč). Všechny výchozí názvy omezení jsou generovány jako „SYS “, „_ “ a číslo. Výchozí názvy můžete vidět v tabulce výše. Například CHECK omezení pro věk sloupce v student tabulka má název SYS_C007372 .


  1. MVC4:UserIsInRole - Nelze se připojit k databázi SQL Server

  2. Nelze získat jarní spouštění pro automatické vytvoření schématu databáze

  3. Funkční jednotky

  4. Oracle DBA Mentor