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 .