Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj IDENT_CURRENT(), aby zwrócić bieżącą wartość tożsamości w kolumnie tożsamości w SQL Server

W SQL Server możesz użyć T-SQL IDENT_CURRENT() funkcja zwracająca ostatnią wartość tożsamości wygenerowaną dla określonej tabeli lub widoku w kolumnie tożsamości. Ostatnia wygenerowana wartość tożsamości może dotyczyć dowolnej sesji i dowolnego zakresu.

Składnia

Składnia wygląda tak:

IDENT_CURRENT( 'table_or_view' )

tabela_lub_widok argumentem jest nazwa tabeli lub widoku, którego wartość tożsamości jest zwracana.

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład kodu.

SELECT IDENT_CURRENT('Pets') AS Result;

Wynik:

+----------+
| Result   |
|----------|
| 3        |
+----------+

W tym przypadku aktualna wartość tożsamości to 3.

Oto kolejne zapytanie, które sprawdza więcej tabel.

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

Wynik:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 3      | 121           | 180      |
+--------+---------------+----------+

Przykład 2 – uwzględnienie schematu

Możesz również dołączyć schemat do argumentu.

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

Wynik:

+----------+
| Result   |
|----------|
| 3        |
+----------+

Przykład 3 – po wstawce

W tym przykładzie wstawiam jeszcze dwa wiersze do Zwierzęta tabeli, a następnie wybierz IDENT_CURRENT() ponownie.

INSERT INTO Pets (PetName)
VALUES ('Brian'), ('Alf');

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

Wynik:

+----------+
| Result   |
|----------|
| 5        |
+----------+

Oto jak wygląda tabela:

SELECT * FROM Pets;

Wynik:

+---------+-----------+
| PetId   | PetName   |
|---------+-----------|
| 1       | Homer     |
| 2       | Felix     |
| 3       | Ruff      |
| 4       | Brian     |
| 5       | Alf       |
+---------+-----------+

Identyfikator zwierzaka kolumna to kolumna tożsamości. Jego wartość inicjatora wynosi 1, a wartość przyrostu również wynosi 1.

Zobacz, jak używać właściwości IDENTITY() w SQL Server, aby zapoznać się z kodem użytym do utworzenia tej tabeli.

Przykład 4 – Sprawdź wszystkie tabele w bazie danych

Oto przykład sprawdzania wszystkich tabel w bazie danych pod kątem ich wartości początkowej tożsamości.

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

Wynik:

+----------------+----------------+-----------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_CURRENT   |
|----------------+----------------+-----------------|
| dbo            | ConstraintTest | 17              |
| dbo            | Event          | 1               |
| dbo            | Scoreboard     | 8               |
| dbo            | Pets           | 5               |
| dbo            | BestFriends    | 121             |
| dbo            | Cities         | 180             |
| dbo            | Colors         | 6               |
| dbo            | t6             | 1               |
| dbo            | t7             | 100             |
+----------------+----------------+-----------------+

O wartości zwrotu

Zwracana wartość dla IDENT_CURRENT() to numeric(@@MAXPRECISION,0)) . Oznacza to, że jest to numeryczny typ danych o stałej precyzji i skali.

Dokładność zależy od serwera. @@MAXPRECISION argument zwraca poziom używany przez dziesiętne i numeryczne typy danych zgodnie z bieżącym ustawieniem na serwerze. Precyzja określa maksymalną całkowitą liczbę cyfr dziesiętnych (obejmuje te po lewej i prawej stronie przecinka).

Drugi argument określa skalę 0 , co oznacza, że ​​po prawej stronie miejsca dziesiętnego nie ma cyfr dziesiętnych.

Możesz uruchomić następujące zapytanie, aby znaleźć poziom dokładności aktualnie ustawiony na Twoim serwerze:

SELECT @@MAX_PRECISION AS [Max Precision];

Oto wynik w moim systemie:

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

Tworzenie kolumny tożsamości

Możesz utworzyć kolumnę tożsamości za pomocą IDENTITY() właściwość w Twojej CREATE TABLE lub ALTER TABLE oświadczenie.

Innym sposobem na utworzenie kolumny tożsamości jest IDENTITY() funkcjonować. Umożliwia to utworzenie kolumny tożsamości przy użyciu SELECT INTO oświadczenie o przesyłaniu danych z jednego źródła do drugiego.

Różnice z @@IDENTITY i SCOPE_IDENTITY()

IDENT_CURRENT() funkcja jest podobna do @@IDENTITY i SCOPE_IDENTITY() , ale są pewne różnice.

@@IDENTITY i SCOPE_IDENTITY() zwróć ostatnią wartość tożsamości wygenerowaną w dowolny tabeli w bieżącej sesji. Jednak różnica między tymi dwiema funkcjami polega na tym, że SCOPE_IDENTITY zwraca wartość tylko w bieżącym zakresie, natomiast @@IDENTITY nie jest ograniczony do określonego zakresu.

IDENT_CURRENT() z drugiej strony nie jest ograniczony zakresem lub sesja. Raczej ogranicza się do określonej tabeli . Zwraca wartość tożsamości wygenerowaną dla określonej tabeli w dowolnej sesji i dowolnym zakresie.

Zobacz IDENT_CURRENT vs @@IDENTITY vs SCOPE_IDENTITY w programie SQL Server:jaka jest różnica? na prosty przykład, który przedstawia różnice między tymi trzema funkcjami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj varchar na datetime w SQL Server

  2. Co to jest STATYSTYKA XML w programie SQL Server?

  3. Czy zapytania ANSI JOIN i inne niż ANSI JOIN będą działać inaczej?

  4. 7 sposobów na zwrócenie wszystkich tabel z kluczem podstawowym w SQL Server

  5. Jak utworzyć tabelę w SQL Server za pomocą zapytania