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

Wstawianie wierszy do tabeli z tylko jedną kolumną IDENTITY

Jeśli masz jedną kolumnę, która jest TOŻSAMOŚCIĄ, po prostu zrób to

INSERT MyTable DEFAULT VALUES;  --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();

Jeśli nie masz tożsamości, czy możesz ją ustawić? To najlepszy sposób... i użyj powyższego SQL.

Jeśli nie, chcesz wstawić nowy wiersz

INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable

Uwagi:

  • Przy dużych obciążeniach rozwiązanie MAX może zawieść z duplikatami
  • SCOPE_IDENTITY jest po fakt, nie wcześniej
  • SCOPE_IDENTITY działa tylko z kolumną IDENTITY. Podobnie jak wszelki idiotyzm przy użyciu IDENT_CURRENT
  • Klauzula wyjściowa zastępuje SCOPE_IDENTITY dla rozwiązania MAX


  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 „datetime2” na „smalldatetime” w SQL Server (przykłady T-SQL)

  2. Dodaj konto pocztowe bazy danych do profilu (T-SQL)

  3. Tworzenie nazw tabel będących zastrzeżonymi słowami/słowami kluczowymi w MS SQL Server

  4. Czy istnieje generator POCO oparty na bazie danych Entity Framework 7?

  5. Użyj COL_LENGTH(), aby uzyskać długość kolumny w SQL Server