Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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() връща стойността IDENTITY, вмъкната в T1, която е последният INSERT, който се е появил в същия обхват. Ако функцията SCOPE_IDENTITY() се извика преди да се появи инструкционното изявление към колоната за идентичност в обхвата, функцията връща стойност NULL.

Стойностите, връщани от IDENT_CURRENT('T1') и IDENT_CURRENT('T2'), са последните самоинкрементални стойности на двете таблици съответно.

Експериментът на AJQC: (40 локални нишки, 40+40 отдалечени нишки едновременно тестване, вмъкване на редове от 1200W), заключението е:

1. В типични каскадни приложения. @@IDENTITY не може да се използва, а паралелни конфликти възникват, когато 1W е многоредов на CII850, 256M SD машини. При P42.8C и 512M DDR има едновременен конфликт, когато има само над 6000 линии.

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

SELECT IDENT_CURRENT('TableName') - Връща последната стойност на етикета, генерирана в зададената таблица

SELECT IDENT_INCR('TableName') – връща стойността за увеличение на отбелязаното поле за зададената таблица

SELECT IDENT_SEED('TableName') – връща маркираната стойност на seed на зададената таблица

Връща автоматичния номер на последния вмъкнат запис

SELECT IDENT_CURRENT('TableName')

Връщане към следващото автоматично число:

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

SELECT @@IDENTITY - Връща последната маркирана стойност, генерирана във всички таблици през текущата сесия








Предишен:SQLServer реализира универсалния метод за разделяне на низове
Следващ:Сподели полезен артефакт за търсене
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com