sql >> Database >  >> RDS >> Sqlserver

Wat is de standaardnaam van de beperking in SQL Server?

Probleem:

U wilt de standaardnamen van beperkingen in de SQL Server-database 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) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int FOREIGN KEY references country(id)
);

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

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

Hier is het resultaat:

TABLE_NAME CONSTRRAINT_TYPE CONSTRRAINT_NAME
land PRIMAIRE SLEUTEL PK__country__3213E83F7EFD826D
land UNIEK UQ__country__72E12F1BB69A1D8C
student PRIMAIRE SLEUTEL PK__student__3213E83F357C7D1D
student UNIEK UQ__student__24E2EDD2AC2A7D87
student CONTROLEER CK__student__age_4E88ABD4
student BUITENLANDSE SLEUTEL FK__student__country_4F7CD00D

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 SQL Server beginnen de namen van de standaardbeperkingen met specifieke voorvoegsels:PK , UQ , CK , of FK .

De standaardnaam voor een PRIMARY KEY beperking begint met 'PK ’, gevolgd door onderstrepingstekens (‘__ ’), de tabelnaam, meer onderstrepingstekens (‘__ '), en een hexadecimaal volgnummer gegenereerd door SQL Server. In ons voorbeeld PK__country__3213E83F7EFD826D is de standaardnaam voor de primaire sleutelbeperking in de tabel country en PK__student__3213E83F357C7D1D is de standaardnaam voor de primaire sleutelbeperking in de tabel student .

De standaardnaam voor een FOREIGN KEY beperking begint met 'FK ’, gevolgd door onderstrepingstekens (‘__ ’), de tabelnaam, meer onderstrepingstekens (‘__ '), de naam van de gerelateerde tabel en een hexadecimaal volgnummer gegenereerd door SQL Server. In ons voorbeeld FK__student__country__4F7CD00D is de standaardnaam voor de externe sleutelbeperking in de tabel student wat gelijk is aan de kolom id in de tabel country .

De standaardnaam voor een UNIQUE beperking is 'UQ ’, onderstrepingstekens (‘__ ’), de tabelnaam, meer onderstrepingstekens (‘__ '), en een hexadecimaal volgnummer gegenereerd door SQL Server. In ons voorbeeld UQ__country__72E12F1BB69A1D8C is de standaardnaam van de unieke beperking voor de kolomnaam in de tabel country , en UQ__student__24E2EDD2AC2A7D87 van de UNIQUE beperking voor de kolomnaam van de tabel student . UNIQUE beperkingen met meerdere kolommen worden in een vergelijkbaar patroon genoemd.

De standaardnaam voor een CHECK beperking is 'CK ’, onderstrepingstekens (‘__ ’), de tabelnaam, meer onderstrepingstekens (‘__ ’), de kolomnaam, meer onderstrepingstekens (‘__’) en een hexadecimaal volgnummer gegenereerd door SQL Server. In ons voorbeeld CK__student__age__4E88ABD4 is de standaardnaam voor de CHECK beperking voor de kolom age van de tafel student .


  1. Een MySQL-database leegmaken

  2. Plezier met (columnstore) compressie op een hele grote tafel – deel 2

  3. TABLOCK versus TABLOCKX

  4. Een veld verplaatsen in het queryraster in Microsoft Access