Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt den ursprünglichen Seed einer Identitätsspalte in SQL Server zurück

In SQL Server können Sie T-SQL IDENT_SEED() verwenden -Funktion, um den ursprünglichen Seed einer Identitätsspalte zurückzugeben. Dies ist der ursprüngliche Ausgangswert, der beim Erstellen der Identitätsspalte angegeben wurde.

Syntax

Die Syntax sieht so aus:

IDENT_SEED ( 'table_or_view' )

Die table_or_view argument ist ein Ausdruck, der die Tabelle oder Ansicht angibt, die auf einen Identitäts-Seed-Wert überprüft werden soll.

Beispiel 1 – Grundlegende Verwendung

Hier ist ein einfaches Codebeispiel.

SELECT IDENT_SEED('Pets') AS Result;

Ergebnis:

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

In diesem Fall ist der Seed-Wert der Identität 1.

Hier ist eine weitere Abfrage, die weitere Tabellen prüft.

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

Ergebnis:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 101           | 150      |
+--------+---------------+----------+

Jede dieser Tabellen wurde mit einem anderen Seed-Identitätswert erstellt.

Beispiel 2 – Einbinden des Schemas

Sie können das Schema auch in das Argument einbeziehen.

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

Ergebnis:

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

Beispiel 3 – Alle Tabellen in der Datenbank prüfen

Hier ist ein Beispiel für die Überprüfung aller Tabellen in der Datenbank auf ihren Identitäts-Seed-Wert.

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

Ergebnis:

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_SEED   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 101          |
| dbo            | Cities         | 150          |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

Über den Rückgabewert

Der Rückgabewert für IDENT_SEED() ist numeric(@@MAXPRECISION,0)) . Dies bedeutet, dass es sich um einen numerischen Datentyp mit fester Genauigkeit und Skalierung handelt.

Die Genauigkeit hängt vom Server ab. Der @@MAXPRECISION Das Argument gibt die Ebene zurück, die von dezimalen und numerischen Datentypen verwendet wird, wie sie derzeit im Server festgelegt sind. Die Genauigkeit gibt die maximale Gesamtzahl der Dezimalstellen an (sie schließt die links und rechts vom Dezimalpunkt ein).

Das zweite Argument gibt eine Skalierung von 0 an , was bedeutet, dass rechts von der Dezimalstelle keine Dezimalstellen stehen.

Sie können die folgende Abfrage ausführen, um die derzeit auf Ihrem Server festgelegte Genauigkeitsstufe zu ermitteln:

SELECT @@MAX_PRECISION AS [Max Precision];

Hier ist das Ergebnis auf meinem System:

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

Erstellen einer Identitätsspalte

Sie können eine Identitätsspalte erstellen, indem Sie IDENTITY() verwenden -Eigenschaft in Ihrem CREATE TABLE oder ALTER TABLE Erklärung.

Eine andere Möglichkeit, eine Identitätsspalte zu erstellen, ist IDENTITY() Funktion. Dadurch können Sie eine Identitätsspalte erstellen, wenn Sie ein SELECT INTO verwenden Anweisung zum Übertragen von Daten von einer Quelle zu einer anderen.