sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er standard begrænsningsnavnet i SQL Server?

Problem:

Du vil kende standardnavnene på begrænsninger i SQL Server-databasen.

Eksempel:

I vores database opretter vi to tabeller, country og student , med følgende begrænsninger:PRIMARY KEY (kolonnen id 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) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int FOREIGN KEY references country(id)
);

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

SELECT TABLE_CATALOG, TABLE_NAME,
       CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Her er resultatet:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
land PRIMÆR NØGLE PK__country__3213E83F7EFD826D
land UNIKK UQ__country__72E12F1BB69A1D8C
elev PRIMÆR NØGLE PK__student__3213E83F357C7D1D
elev UNIKK UQ__student__24E2EDD2AC2A7D87
elev TJEK CK__student__age__4E88ABD4
elev UDLANDS NØGLE FK__student__country__4F7CD00D

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 SQL Server starter standard begrænsningsnavnene med specifikke præfikser:PK , UQ , CK eller FK .

Standardnavnet for en PRIMARY KEY begrænsning starter med 'PK ’, efterfulgt af understregninger (‘__ ’), tabelnavnet, flere understregninger (‘__ ’), og et hexadecimalt sekvensnummer genereret af SQL Server. I vores eksempel, PK__country__3213E83F7EFD826D er standardnavnet for den primære nøglebegrænsning i tabellen country og PK__student__3213E83F357C7D1D er standardnavnet for den primære nøglebegrænsning i tabellen student .

Standardnavnet for en FOREIGN KEY begrænsning starter med 'FK ’, efterfulgt af understregninger (‘__ ’), tabelnavnet, flere understregninger (‘__ ’), navnet på den relaterede tabel og et hexadecimalt sekvensnummer genereret af SQL Server. I vores eksempel, FK__student__country__4F7CD00D er standardnavnet for den fremmede nøgle-begrænsning i tabellen student hvilket svarer til kolonnen id i tabellen country .

Standardnavnet for en UNIQUE begrænsning er 'UQ ’, understreger (‘__ ’), tabelnavnet, flere understregninger (‘__ ’), og et hexadecimalt sekvensnummer genereret af SQL Server. I vores eksempel, UQ__country__72E12F1BB69A1D8C er standardnavnet på den unikke begrænsning for kolonnenavnet i tabellen country og UQ__student__24E2EDD2AC2A7D87 af UNIQUE begrænsning for kolonnenavnet på tabellen student . UNIQUE begrænsninger med flere kolonner er navngivet i et lignende mønster.

Standardnavnet for en CHECK begrænsning er 'CK ’, understreger (‘__ ’), tabelnavnet, flere understregninger (‘__ ’), kolonnenavnet, flere understregninger (‘__’) og et hexadecimalt sekvensnummer genereret af SQL Server. I vores eksempel, CK__student__age__4E88ABD4 er standardnavnet for CHECK begrænsning for kolonnen age i tabellen student .


  1. WEEKDAY() Eksempler – MySQL

  2. Sådan ændres skabelonens databasesamlingskodning

  3. Introduktion til Storage Spaces Direct til SQL Server

  4. Fordele ved MySQLi frem for MySQL