sql >> Database >  >> RDS >> Sqlserver

Retourneer de verhogingswaarde van een identiteitskolom in SQL Server

In SQL Server kunt u de T-SQL IDENT_INCR() . gebruiken functie om de incrementwaarde van een identiteitskolom te retourneren. Dit is de verhogingswaarde die is opgegeven bij het maken van de identiteitskolom.

Syntaxis

De syntaxis gaat als volgt:

IDENT_INCR ( 'table_or_view' )

De table_or_view argument is een expressie die de tabel of weergave specificeert om te controleren op een geldige identiteitstoenamewaarde.

Voorbeeld 1 – Basisgebruik

Hier is een eenvoudig codevoorbeeld.

SELECT IDENT_INCR('Pets') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

In dit geval is de identiteitstoenamewaarde 1.

Hier is nog een query die meer tabellen controleert.

SELECT 
  IDENT_INCR('Pets') AS Pets,
  IDENT_INCR('BestFriends') AS BestFriends,
  IDENT_INCR('Cities') AS Cities;

Resultaat:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 10            | 10       |
+--------+---------------+----------+

Voorbeeld 2 – inclusief het schema

Je kunt het schema ook in het argument opnemen.

SELECT IDENT_INCR('dbo.Pets') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Voorbeeld 3 – Controleer alle tabellen in de database

Hier is een voorbeeld van het controleren van alle tabellen in de database op hun identiteits-seedwaarde.

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_INCR  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;

Resultaat:

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_INCR   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 10           |
| dbo            | Cities         | 10           |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

Over de retourwaarde

De retourwaarde voor IDENT_INCR() is numeric(@@MAXPRECISION,0)) . Dit betekent dat het een numeriek gegevenstype is met een vaste precisie en schaal.

De precisie is afhankelijk van de server. De @@MAXPRECISION argument retourneert het niveau dat wordt gebruikt door decimale en numerieke gegevenstypen zoals momenteel ingesteld op de server. De precisie specificeert het maximale totale aantal cijfers achter de komma (inclusief die aan de linker- en rechterkant van de komma).

Het tweede argument specificeert een schaal van 0 , wat betekent dat er geen decimale cijfers rechts van de decimale plaats staan.

U kunt de volgende query uitvoeren om het precisieniveau te vinden dat momenteel op uw server is ingesteld:

SELECT @@MAX_PRECISION AS [Max Precision];

Dit is het resultaat op mijn systeem:

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

Een identiteitskolom maken

U kunt een identiteitskolom maken met behulp van de IDENTITY() eigenschap in uw CREATE TABLE of ALTER TABLE uitspraak.

Een andere manier om een ​​identiteitskolom aan te maken is de IDENTITY() functie. Hiermee kunt u een identiteitskolom maken bij gebruik van een SELECT INTO statement om gegevens van de ene bron naar de andere over te dragen.


  1. Waarom deze slaapstand-sjabloon bulkUpdate niet werkt

  2. Mysql Zoekprestaties verbeteren met jokertekens (%%)

  3. Selecteer alleen de tijdstempels van vandaag (sinds middernacht)

  4. Oracle-provider voor Oledb ontbreekt in VS 2015 Shell