Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12386|Відповідь: 0

[Джерело] SqlServer реалізує ID нововведеного запису

[Копіювати посилання]
Опубліковано 15.06.2016 11:45:40 | | |

Джерело: Інтернет Автор: невідомо

- Створення баз даних і таблиць

створити базу даних MyDataBase

використовуйте MyDataBase

Створити таблицю mytable

id int ідентичність(1,1),

Ім'я Варшар (20)



--Виконати цей SQL, щоб дізнатися значення самоінкрементального стовпця, що відповідає запису, який щойно був вставлений.

вставити у mytable значення ('Li Si')

вибрати @@identity

2. Порівняння трьох методів

У SQL Server 2000 є три схожі функції: SCOPE_IDENTITY, IDENT_CURRENT та @@IDENTITY, усі з яких повертають значення, вставлені у стовпець IDENTITY.

IDENT_CURRENT Повертає останнє ідентифікаційне значення, згенероване для конкретної таблиці в будь-якій сесії та в будь-якому діапазоні. IDENT_CURRENT Не обмежений обсягом і сесією, а визначеною таблицею. IDENT_CURRENT Повертає значення, згенероване для конкретної таблиці в будь-якій сесії та сфері видимості.

@@IDENTITY Повертає останнє ідентифікаційне значення, згенероване для будь-якої таблиці у всіх сферах поточної сесії.

SCOPE_IDENTITY Повертає останнє ідентифіковане значення, яке було згенероване для поточної сесії, та будь-яку таблицю в поточному діапазоні

SCOPE_IDENTITY і @@IDENTITY повертає останнє ідентифікаційне значення, яке було згенероване в будь-якій таблиці під час поточної сесії. Однак SCOPE_IDENTITY повертає лише значення, вставлені у поточний діапазон; @@IDENTITY Не обмежується конкретним обсягом.

Наприклад, існують дві таблиці — T1 і T2, на яких визначено тригер INSERT. Коли рядок вставляють у T1, тригер спрацьовує, і ряд вставляється в T2. Цей приклад ілюструє два телескопи: один на T1, інший на T2 внаслідок спуску.

Припускаючи, що і T1, і T2 мають стовпці IDENTITY, @@IDENTITY і SCOPE_IDENTITY повертатимуть різні значення наприкінці оператора INSERT на T1.

@@IDENTITY Повертає останнє значення стовпця IDENTITY, вставлене в будь-яку область видимості поточної сесії, яке є значенням, вставленим у T2.

SCOPE_IDENTITY() повертає значення ІДЕНТИЧНОСТІ, вставлене в T1, яке є останнім INSERT, що відбувався в тому ж діапазоні. Якщо функцію SCOPE_IDENTITY() викликають до того, як у сфері обмежування виникає оператор вставки до стовпця ідентичності, функція повертає значення NULL.

Значення, які повертаються IDENT_CURRENT('T1') та IDENT_CURRENT('T2'), є останніми самоінкрементальними значеннями двох таблиць відповідно.

Експеримент AJQC: (40 локальних потоків, 40+40 віддалених потоків одночасно тестування, вставка рядків потужністю 1200 Вт), висновок такий:

1. У типових каскадних застосуваннях. @@IDENTITY не можна використовувати, і паралельні конфлікти виникатимуть, коли 1 Вт багаторядний на CII850, 256M SD-машинах. На P42.8C та 512M DDR одночасно виникає конфлікт, коли ліній перевищує 6000.

2.SCOPE_IDENTITY() абсолютно надійний і може використовуватися у процесі зберігання, навіть тригери не потрібно створювати, і немає паралельних конфліктів

SELECT IDENT_CURRENT('TableName') — повертає останнє значення міток, згенероване у вказаній таблиці

SELECT IDENT_INCR('TableName') — повертає значення інкременту поля для зазначеної таблиці

SELECT IDENT_SEED('TableName') — повертає позначене значення насіння поля вказаної таблиці

Повертає автоматичний номер останнього вставленого запису

SELECT IDENT_CURRENT('TableName')

Повернутися до наступного автоматичного номера:

SELECT IDENT_CURRENT('TableName')+(SELECT IDENT_INCR('TableName'))

SELECT @@IDENTITY - Повертає останнє позначене значення, яке було згенероване у всіх таблицях поточної сесії








Попередній:SQLServer реалізує універсальний метод розщеплення рядків
Наступний:Поділіться корисним пошуковим артефактом
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com