Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.02.2002, 08:05
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Можно использовать @@identity, но если после вставки записи сработает триггер и будет добавлена запись в другую таблицу с identity, то @@identity будет не верной. Вроде где-то читал, что через OLE DB как-то можно получить значение identity именно для той таблицы, в которую добавляются данные... Ни у кого не возникало такой проблемы? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 08:24
|
|||
|---|---|---|---|
|
|||
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Если 2000 то SCOPE_IDENTITY А если 7.0 то я пользую Max(ID) - конечно медленней чем @@identity С уважением, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 09:18
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Использую 7.0 Но если кто-то успеет вставить запись до того, как будет вызван Max(ID), то получить ключ добавленной записи не удастся. С уважением, Павел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 09:35
|
|||
|---|---|---|---|
|
|||
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Ограничте свою вставку и получение Max(ID) "скобочками" begin tran и commit tran и никто ничего не изменит Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 09:59
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Да, это конечно, поможет , но max() - не самый эффективный способ.. Просто, где-то мелькала информация, что с помощью какого-то ухищрения с заданием параметров комманды OLE DB можно автоматом получать identity добавленной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 11:11
|
|||
|---|---|---|---|
|
|||
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Можно вообще отказаться от поля identity, в 6. был глюк для полей этого типа если на нем еще и ключ висел (до сервис пака не помню какого это было) и приходилось поддерживать свои счетчики - может Вам поможет такой способ, если совсем плохо. А про OLE DB и такую возможность я ничего не слышал, мне кажется навряд ли это возможно - если не получается на сервере то тем более не получится и на клиенте, все же сервер первичен. С уважением, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 14:10
|
|||
|---|---|---|---|
|
|||
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
а почему бы не устанавливать identity в триггере на добавление, ведь пока триггер не выполнился никто не сможет ничего нового добавить т.н. INTERNAL LOCK а там уж как вам больше нравится: хотите через MAX(ID), хотите через @@IDENTITY, а можете еще чего придумать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 14:51
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
2 pavel В триггере прочитайте @@identity в переменную, а потом после вставки записи в другую таблицу выполните такую команду: select @YourIdentity as NewIdentity В результате выполнения вставки (например с помощью процедуры) вы получите на выходе рекордсет со столбцом NewIdentity и одной строчкой со значением этого identity. Max(ID) использовать нельзя, потому что или могут появиться одинаковые значения (если использовать неправильно) или будут тормоза (если использовать правильно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 15:04
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
Т.е. Вы предлагаете в триггере перед обработкой других таблиц (и соответсвенно перед возможным изменением @@identity) сохранить значение @@identity? Спасибо, наверное это сработает. Просто хотелось обойтись обойтись малой кровью - сделать все через OLE DB. Предполагается куча таблиц, в которых было бы удобно использовать identity для ключевых полей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 15:11
|
|||
|---|---|---|---|
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
2 pavel >сохранить значение @@identity? Надеюсь Вы поняли меня правильно, сохранить в переменную set @NewId = identity insert в другие таблицы select @NewId as NewId ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.02.2002, 16:12
|
|||
|---|---|---|---|
|
|||
Значение IDENTITY для добавленной записи.. |
|||
|
#18+
IMHO, все же не стит возврашать выборку из тригера, и закладываться на это тоже не желательно, на этапе пректирования да и первичной эксплуатации не всегда известно где будут тригера а где и нет, а если другой разработчик добавит еще тригер...можно запросто получить нерабочую систему. но видимо это решение можно использовать на небольшом количестве таблиц когда оч. важно быстродействие и процедура добавления записи может позволить себе возвращать один рекордсет с новым значением ID для записи. С уважением, Сергей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1823843]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 365ms |

| 0 / 0 |
