Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 12386|Ответ: 0

[Источник] SqlServer реализует идентификатор вновь вставленной записи

[Скопировать ссылку]
Опубликовано 15.06.2016 11:45:40 | | |

Источник: Интернет. Автор: неизвестен.

- Создавать базы данных и таблицы

создать базу данных MyDataBase

используйте MyDataBase

Создать таблицу mytable

id int тождество(1,1),

Имя Варшар (20)



--Выполните этот SQL, чтобы узнать значение самоинкрементального столбца, соответствующего только что вставленной записи

вставить в мои значения ('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 удалённых потоков, вставка строк мощностью 1200 Вт), вывод таков:

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

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

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

SELECT IDENT_INCR('TableName') — возвращает значение увеличения отмеченного поля для указанной таблицы

SELECT IDENT_SEED('TableName') — возвращает отмеченное значение семени поля указанной таблицы

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

ВЫБРАТЬ IDENT_CURRENT('TableName')

Вернуться к следующему автоматическому номеру:

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

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








Предыдущий:SQLServer реализует универсальный метод разделения строк
Следующий:Поделитесь полезным поисковым артефактом
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com