sql >> Database >  >> RDS >> Oracle

Wat is de standaardnaam van de beperking in Oracle?

Probleem:

U wilt de standaardnamen van beperkingen in een tabel in Oracle weten.

Voorbeeld:

In onze database maken we twee tabellen, country en student , met de volgende beperkingen:PRIMARY KEY (de kolom-ID in de tabellen country en student ), FOREIGN KEY (de kolom country_id in de tabel student ), DEFAULT (de kolom name in de tabel student ), UNIQUE (de kolom name in de tabel country en de kolom personal_number in de tabel student ), en CHECK (de kolom age in de tabel student ).

Oplossing:

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

Laten we laten zien hoe Oracle de beperkingen van deze tabellen standaard benoemt. Gebruik deze zoekopdracht om ze te bekijken:

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

Hier is het resultaat:

CONSTRAINT_NAME CONSTRRAINT_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

Discussie:

Wanneer we onze tabellen maken, stellen we beperkingen in voor sommige kolommen. We specificeren echter geen namen voor deze beperkingen, dus ze worden standaard genoemd. Hoe worden de standaardnamen voor beperkingen gegenereerd?

In Oracle begint de standaardnaam van de beperking met de gebruikersnaam, gevolgd door '_C ’ en een volgnummer. De soorten beperkingen zijn 'C ’ (check ), 'P ’ (primaire sleutel), ‘U ’ (unieke beperking), en ‘R ' (vreemde sleutel). Alle standaard namen van beperkingen worden gegenereerd als 'SYS ’, ‘_ ’, en het nummer. U kunt de standaardnamen in de bovenstaande tabel zien. Bijvoorbeeld de CHECK beperking voor de kolomleeftijd in de student tabel heeft de naam SYS_C007372 .


  1. Waarschuwing:mysqli_connect():(HY000/1045):Toegang geweigerd voor gebruiker 'gebruikersnaam'@'localhost' (met wachtwoord:JA)

  2. Hoe u onbedoelde gegevensverwijdering in MySQL en MariaDB kunt voorkomen

  3. PL/SQL-verzameling:geneste tabel in Oracle-database

  4. Google BigQuery ODBC-stuurprogramma