sql >> Databasteknik >  >> RDS >> Oracle

Vad är standardbegränsningsnamnet i Oracle?

Problem:

Du vill veta standardnamnen på begränsningar i en tabell i Oracle.

Exempel:

I vår databas skapar vi två tabeller, country och student , med följande begränsningar:PRIMARY KEY (kolumn-id:t i tabellerna country och student ), FOREIGN KEY (kolumnen country_id i tabellen student ), DEFAULT (kolumnen name i tabellen student ), UNIQUE (kolumnen name i tabellen country och kolumnen personal_number i tabellen student ), och CHECK (kolumnen age i tabellen student ).

Lösning:

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)
);

Låt oss visa hur Oracle namnger begränsningarna för dessa tabeller som standard. Använd den här frågan för att se dem:

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

Här är resultatet:

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

Diskussion:

När vi skapar våra tabeller sätter vi begränsningar för vissa kolumner. Vi anger dock inte namnen för dessa begränsningar, så de namnges som standard. Hur genereras standardnamnen för begränsningar?

I Oracle börjar standardnamnet med användarnamnet, följt av _C ’ och ett sekvensnummer. Typerna av begränsningar är 'C ’ (check ), 'P ' (primär nyckel), 'U ' (unik begränsning) och 'R ' (främmande nyckel). Alla standardbegränsningsnamn genereras som 'SYS ', '_ ’ och numret. Du kan se standardnamnen i tabellen ovan. Till exempel, CHECK begränsning för kolumnen ålder i student tabellen har namnet SYS_C007372 .


  1. Hur man släpper eller tar bort alla utlösare från en databas i SQL Server

  2. Hur man får gårdagens datum i MySQL

  3. Varför returnerar password_verify falskt?

  4. Rapportera mer detaljerat än vanligt – Microsoft Access