Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вмъкване на редове в таблица само с една колона IDENTITY

Ако имате една колона, която е IDENTITY, просто направете това

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

Ако нямате самоличност, тогава можете ли да я зададете? Това е най-добрият начин... и използвайте SQL по-горе.

Ако не, искате да вмъкнете нов ред

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

Бележки:

  • При големи натоварвания решението MAX може да се провали с дубликати
  • SCOPE_IDENTITY е след фактът, не преди
  • SCOPE_IDENTITY работи само с колона IDENTITY. Същото с всеки идиотизъм, използващ IDENT_CURRENT
  • Изходната клауза заменя SCOPE_IDENTITY за решението 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. Как да форматирате числа в SQL Server

  2. Намиране на дублиращи се редове в SQL Server

  3. Заявка за сравняване на дати в SQL

  4. Как да изброя наличните екземпляри на SQL сървъри, използващи SMO ​​в C#?

  5. Връщане на номера на дял за всеки ред при запитване на разделена таблица в SQL Server (T-SQL)