sql >> Database >  >> RDS >> Sqlserver

SQL Server, kan null niet in het primaire sleutelveld worden ingevoegd?

Primaire sleutels in elke relationele databases mogen niet NULL zijn - het is een van de belangrijkste, fundamentele kenmerken van een primaire sleutel.

Zie:SQL by Design:hoe de primaire sleutel te kiezen

UPDATE: ok, dus je wilt een "auto-increment" primaire sleutel in SQL Server.

U moet het definiëren als een INT IDENTITY in uw CREATE TABLE-instructie:

 CREATE TABLE dbo.YourTable(ID INT IDENTITY, col1 INT, ..., colN INT)

en wanneer u vervolgens een INSERT doet, moet u expliciet de kolommen specificeren die moeten worden ingevoegd, maar specificeer niet de kolom "ID" in die lijst - dan zal SQL Server automatisch de juiste waarde vinden:

 INSERT INTO dbo.YourTable(col1, col2, ..., colN) -- anything **except** `ID`      
 VALUES(va1l, val2, ..., valN)

Als u dit wilt doen nadat u de tabel al heeft gemaakt, kunt u dit doen in de tabelontwerper van SQL Server Management Studio:



  1. Configureer SQL-taken in SQL Server met T-SQL

  2. SQLiteStatement voer een SELECT / INSERT / DELETE / UPDATE uit

  3. SQL Server-equivalent van de functie substring_index in MySQL

  4. PostgreSQL-waarde uit vorige rij gebruiken als deze ontbreekt