Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да дефинирате първичен ключ за автоматично увеличение в SQL Server

Подобно на MySQL, PostgreSQL, Oracle и много други релационни бази данни, SQL Server се използва най-добре при присвояване на уникални първични ключове на повечето таблици с бази данни.

Предимствата на използването на цифрови, автоматично увеличаващи се първични ключове са многобройни, но най-въздействащите предимства са по-бързата скорост при изпълнение на заявки и независимостта на данните при търсене в хиляди записи, които могат да съдържат често променяни данни на друго място в таблицата. С последователен и уникален цифров идентификатор приложенията могат да се възползват от тези по-бързи и надеждни заявки.

Създаване на основна таблица

След като се свържете с вашия SQL Server, обикновено започвате с CREATING нова таблица, която съдържа полето, което искате да използвате като ваш увеличен първичен ключ. За нашия пример ще се придържаме към изпитания и верен id поле:

CREATE TABLE books (
  id              INT           NOT NULL,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Проблемът тук е, че нямаме начин да контролираме нашия id поле. Когато се вмъкне нов запис, ние не само трябва да въвеждаме ръчно стойност за id , но трябва да изпълним заявка предварително, за да се опитаме да проверим този id стойността вече не съществува (почти невъзможно, когато се работи с много едновременни връзки).

Използване на ограничения за идентичност и първичен ключ

Оказва се, че решението използва две опции за ограничаване, предоставени от SQL Server.

Първият е PRIMARY KEY , което, както подсказва името, принуждава посочената колона да се държи като напълно уникален индекс за таблицата, позволявайки бързо търсене и заявки.

Докато SQL Server позволява само един PRIMARY KEY ограничение, присвоено на една таблица, този PRIMARY KEY може да се дефинира за повече от една колона. В сценарий с няколко колони отделните колони могат да съдържат дублиращи се, неуникални стойности, но PRIMARY KEY ограничението гарантира, че всяка комбинация на ограничените стойности всъщност ще бъде уникален спрямо всяка друга комбинация.

Втората част от пъзела е IDENTITY ограничение, което информира SQL Server автоматично да увеличава числовата стойност в рамките на определената колона всеки път, когато се INSERTED нов запис . Докато IDENTITY може приемете два аргумента на числовото seed откъдето ще започват стойностите, както и increment , тези стойности обикновено не са посочени с IDENTITY ограничение и вместо това са оставени по подразбиране (и двете по подразбиране са на 1 ).

С това ново знание на една ръка разстояние можем да пренапишем предишните си CREATE TABLE изявление чрез добавяне на нашите две нови ограничения.

CREATE TABLE books (
  id              INT           NOT NULL    IDENTITY    PRIMARY KEY,
  title           VARCHAR(100)  NOT NULL,
  primary_author  VARCHAR(100),
);

Това е всичко. Сега id колона от нашите books таблицата ще се увеличава автоматично при всеки INSERT и id полето гарантирано също е уникална стойност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на RStudio към SQL Server

  2. ListAGG в SQLSERVER

  3. Намерете понеделници между 2 дати

  4. Оптимизиран SQL за дървовидни структури

  5. SELECT заявка с условие CASE и SUM()