sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är standardnamnet för begränsningar i SQL Server?

Problem:

Du vill veta standardnamnen på begränsningar i SQL Server-databasen.

Exempel:

I vår databas skapar vi två tabeller, country och student , med följande begränsningar:PRIMARY KEY (kolumnen id 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) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int FOREIGN KEY references country(id)
);

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

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

Här är resultatet:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
land PRIMÄRNYCKEL PK__country__3213E83F7EFD826D
land UNIKT UQ__country__72E12F1BB69A1D8C
student PRIMÄRNYCKEL PK__student__3213E83F357C7D1D
student UNIKT UQ__student__24E2EDD2AC2A7D87
student KONTROLLERA CK__student__age__4E88ABD4
student UTLANDSNYCKEL FK__student__country__4F7CD00D

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 SQL Server börjar standardnamnen med begränsningar med specifika prefix:PK , UQ , CK , eller FK .

Standardnamnet för en PRIMARY KEY begränsning börjar med 'PK ’, följt av understreck (‘__ ’), tabellnamnet, fler understreck (‘__ ’), och ett hexadecimalt sekvensnummer genererat av SQL Server. I vårt exempel, PK__country__3213E83F7EFD826D är standardnamnet för den primära nyckelbegränsningen i tabellen country och PK__student__3213E83F357C7D1D är standardnamnet för primärnyckelbegränsningen i tabellen student .

Standardnamnet för en FOREIGN KEY begränsning börjar med 'FK ’, följt av understreck (‘__ ’), tabellnamnet, fler understreck (‘__ ’), namnet på den relaterade tabellen och ett hexadecimalt sekvensnummer genererat av SQL Server. I vårt exempel, FK__student__country__4F7CD00D är standardnamnet för den främmande nyckelbegränsningen i tabellen student vilket motsvarar kolumnen id i tabellen country .

Standardnamnet för en UNIQUE begränsningen är 'UQ ’, understryker (‘__ ’), tabellnamnet, fler understreck (‘__ ’), och ett hexadecimalt sekvensnummer genererat av SQL Server. I vårt exempel, UQ__country__72E12F1BB69A1D8C är standardnamnet på den unika begränsningen för kolumnnamnet i tabellen country , och UQ__student__24E2EDD2AC2A7D87 av UNIQUE begränsning för kolumnnamnet för tabellen student . UNIQUE begränsningar med flera kolumner namnges i ett liknande mönster.

Standardnamnet för en CHECK begränsningen är 'CK ’, understryker (‘__ ’), tabellnamnet, fler understreck (‘__ ’), kolumnnamnet, fler understreck (‘__’) och ett hexadecimalt sekvensnummer genererat av SQL Server. I vårt exempel, CK__student__age__4E88ABD4 är standardnamnet för CHECK begränsning för kolumnen age i tabellen student .


  1. Gå igenom kolumner i RECORD

  2. SQL Server Active Sessions and Status

  3. Skapa underhållsplaner i SQL Server

  4. Hur man genererar drop Unique Constraint-skript i SQL Server Database - SQL Server / TSQL Tutorial Del 99