sql >> Database teknologi >  >> RDS >> Oracle

Hvad er standardbegrænsningsnavnet i Oracle?

Problem:

Du vil kende standardnavnene på begrænsninger i en tabel i Oracle.

Eksempel:

I vores database opretter vi to tabeller, country og student , med følgende begrænsninger:PRIMARY KEY (kolonne-id'et i tabellerne country og student ), FOREIGN KEY (kolonnen country_id i tabellen student ), DEFAULT (kolonnen name i tabellen student ), UNIQUE (kolonnen name i tabellen country og kolonnen personal_number i tabellen student ), og CHECK (kolonnen 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)
);

Lad os vise, hvordan Oracle navngiver disse tabellers begrænsninger som standard. Brug denne forespørgsel til at se dem:

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

Her er 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 opretter vores tabeller, sætter vi begrænsninger for nogle kolonner. Vi angiver dog ikke navnene for disse begrænsninger, så de navngives som standard. Hvordan genereres standardnavnene for begrænsninger?

I Oracle starter standardbegrænsningsnavnet med brugernavnet efterfulgt af '_C ’ og et løbenummer. Begrænsningstyperne er 'C ’ (check ), ‘P ' (primær nøgle), 'U ' (unik begrænsning) og 'R ' (fremmed nøgle). Alle standard begrænsningsnavne genereres som 'SYS ', '_ ’, og nummeret. Du kan se standardnavnene i tabellen ovenfor. For eksempel CHECK begrænsning for kolonnealderen i student tabellen har navnet SYS_C007372 .


  1. PostgreSQL 9.6:Parallel sekventiel scanning

  2. Sådan slettes alle standardbegrænsninger i SQL Server-databasen - SQL Server / TSQL-vejledning, del 94

  3. Optimering af en SELECT-forespørgsel, der kører langsomt på Oracle, som kører hurtigt på SQL Server

  4. Heroku Postgres:For mange forbindelser. Hvordan dræber jeg disse forbindelser?