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

Как да използвам клаузата OUTPUT на израз INSERT, за да получа стойността на самоличността?

Можете или да накарате нововмъкнатия ID да бъде изведен към конзолата на SSMS по следния начин:

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Можете да използвате това и от напр. C#, когато трябва да върнете идентификационния номер обратно на вашето приложение за повикване - просто изпълнете SQL заявката с .ExecuteScalar() (вместо .ExecuteNonQuery() ), за да прочетете получения ID назад.

Или ако трябва да заснемете нововмъкнатия ID вътре в T-SQL (напр. за по-нататъшна обработка), трябва да създадете таблична променлива:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

По този начин можете да поставите множество стойности в @OutputTbl и направете допълнителна обработка на тях. Можете също така да използвате „обикновена“ временна таблица (#temp ) или дори „истинска“ постоянна таблица като „изходна цел“ тук.




  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 с OBJECTPROPERTY()

  2. Извличане на милиарди редове от отдалечен сървър?

  3. Незадължителни аргументи в клаузата WHERE

  4. Как да получите стойността от стъпка 1 до стъпка 2 в sql Job

  5. Топ 5 факта за намиране и замяна на SQL текстове в SQL Server с функция REPLACE