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

Най-добрият начин да получите PK Guid за вмъкнат ред

Можете да използвате функцията OUTPUT, за да върнете стойностите по подразбиране обратно в параметър.

CREATE TABLE MyTable
(
    MyPK UNIQUEIDENTIFIER DEFAULT NEWID(),
    MyColumn1 NVARCHAR(100),
    MyColumn2 NVARCHAR(100)
)

DECLARE @myNewPKTable TABLE (myNewPK UNIQUEIDENTIFIER)

INSERT INTO 
    MyTable
(
    MyColumn1,
    MyColumn2
)
OUTPUT INSERTED.MyPK INTO @myNewPKTable
VALUES
(
    'MyValue1',
    'MyValue2'
)

SELECT * FROM @myNewPKTable

Трябва да кажа обаче, внимавайте да използвате уникален идентификатор като първичен ключ. Индексирането на GUID е изключително лошо изпълнение, тъй като всички новогенерирани guid ще трябва да бъдат вмъкнати в средата на индекс и рядко просто да се добавят в края. Има нова функционалност в SQL2005 за NewSequentialId(). Ако неизвестността не се изисква с вашите Guids, тогава това е възможна алтернатива.



  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_Variant в SQL Server

  2. Как да оптимизирате използването на клаузата ИЛИ, когато се използва с параметри (SQL Server 2008)

  3. Вмъкване на няколко реда БЕЗ повтаряне на частта INSERT INTO ... от израза?

  4. Основи и използване на NOLOCK намек в SQL Server

  5. Какво представлява типът данни SYSNAME в SQL Server?