سؤال

ولقد قرأت هذا السؤال حول الحصول على هوية صف المدرجة. هو نوع من الصلة سؤالي.

هل هناك طريقة للحصول على ارشد لالصف المدرج؟ الجدول أنا أعمل مع وGUID مثل المفتاح الأساسي (عجز لNEWID)، وأود أن استرداد أن ارشد بعد إدراج صف واحد.

هل هناك أي شيء مثل @@IDENTITY، IDENT_CURRENT أو SCOPE_IDENTITY لالمعرفات الفريدة العمومية؟

هل كانت مفيدة؟

المحلول

ويمكنك استخدام وظيفة 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 هو الأداء الضعيف للغاية مثل أي المعرفات الفريدة العمومية التي تم إنشاؤها حديثا سوف يتعين إدراجها في منتصف المؤشر rrarely فقط واضاف في نهاية المطاف. هناك وظائف جديدة في SQL2005 لNewSequentialId (). إذا لم يكن مطلوبا الغموض مع المعرفات الفريدة العمومية الخاصة بك ثم في بديل ممكن.

نصائح أخرى

وثمة نهج آخر أكثر نظافة، إذا إدراج صف واحد

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

DECLARE @MyID UNIQUEIDENTIFIER;
SET @MyID = NEWID();

INSERT INTO 
    MyTable
(
    MyPK
    MyColumn1,
    MyColumn2
)
VALUES
(
    @MyID,
    'MyValue1',
    'MyValue2'
)

SELECT @MyID;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top