sql >> Database >  >> RDS >> Sqlserver

Waarom niet null primaire sleutel gebruiken in TSQL?

Voor de duidelijkheid bewerkt

Volgens de SQL-specificatie mag een primaire sleutel geen NULL bevatten. Dit betekent dat het versieren van een kolom met "NIET NULL PRIMARY KEY" of alleen "PRIMARY KEY" hetzelfde zou moeten doen. Maar u vertrouwt erop dat de SQL-engine in kwestie correct de SQL-standaard volgt. Als voorbeeld, vanwege een vroege bug, implementeert SQL Lite de standaard niet correct en staat het null-waarden toe in primaire sleutels zonder gehele getallen (zie sqlite.org/lang_createtable.html). Dat zou voor (tenminste) SQLLite betekenen dat de twee statements twee verschillende dingen doen.

Aangezien "NIET NULL PRIMARY KEY" duidelijk de intentie aangeeft en doorgaat met het geven van niet-null-waarden, zelfs als de primaire sleutel wordt verwijderd, zou dat de voorkeurssyntaxis moeten zijn.



  1. Welke methoden kunnen worden gebruikt om verschillende versies van reeds bestaande databases te beheren?

  2. Over de impact van paginagrote schrijfacties

  3. De naam van de primaire sleutelbeperking voor meerdere tabellen in de SQL Server-database wijzigen - SQL Server / TSQL-zelfstudie, deel 64

  4. Oracle krijgt checksum-waarde voor een gegevensblok gedefinieerd door een select-clausule