Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

INSERT в MSSQL [D7, MSSQL]


Страницы:   1 2 3 4

ST ©   (2005-04-28 12:23:00) 

Господа, подскажите, можно ли при выполнении INSERT на MSSQL 2000 вытащить полученный автоинкрементом новый индекс записи в одном запросе.


Polevi   (2005-04-29 10:56:00) [41]

>ANB ©   (29.04.05 10:34) [28]
достал ты уже своим невежеством, изучи сервер сначала а потом советы давай
начальник ему плохой посоветовал.. дадад
начни со своего вопроса в [11]


ANB   (2005-04-29 10:34:00) [42]


> Johnmen ©   (29.04.05 09:51) [27]
- это ты для MS SQL выдрал ? Интересно, зачем им триггера AFTER, они же с наборами данных работают deleted и inserted . . . Да ладно, не принципиально. Получается что BEFORE таки есть. Один хрен, для автоинкрементального поля ID в триггере не подменишь.


Johnmen   (2005-04-29 09:51:00) [43]

>ANB ©   (29.04.05 09:31) [26]

CREATE TRIGGER trigger_name
...
{{{ FOR | AFTER| INSTEAD OF} { [ INSERT] [ , ] [ UPDATE ] }
...


ANB   (2005-04-29 09:31:00) [44]


> Fay ©   (28.04.05 18:04) [25]
> ANB ©   (28.04.05 17:15) [18]
> AFTER
- то есть срабатывает после инсерта ? Быть такого не может. А как же тогда подменять поля при необходимости ? Прямо табличку апдейтить ? И опять на триггер нарываться ? У тебя стоит MS SQL ? Если да, то слазий в хелп, плз, а то у меня его сейчас нет.


Fay   (2005-04-28 18:04:00) [45]

ANB ©   (28.04.05 17:15) [18]
AFTER


ANB   (2005-04-28 17:49:00) [46]


> Johnmen ©   (28.04.05 17:43) [23]
- почему, я лично предпочитаю юзать сиквенсы или GUID. Но по данному топику другого ответа действительно нет.


Johnmen   (2005-04-28 17:43:00) [47]

Мои три копейки - так и только так : ANB ©   (28.04.05 13:01) [5]
Обсуждение альтернативных "рукоёмких" способов неуместно, ИМХО.


ANB   (2005-04-28 17:42:00) [48]


> Max Zyuzin ©   (28.04.05 17:27) [21]
- топик читал ? Поле уже автоинкрементальное.

> другого способа я так и не нашел...
- select @@identity - это и есть нормальный способ. Мне его ребята в РНИВЦ в Нижнем подсказали. Я до этого сам максом последний ID доставал.
И не всегда ты имеешь право перепроектировать БД. Плюс, тебе придется либо генерить ID уникальный по всей базе (что не плохо, но на каждой операции у тебя все клиенты будут ждать разблокировки служебной таблицы), либо заводить эту таблицу для каждой таблицы с данными. Тогда проще max юзать и саму таблицу с данными блокировать.


Max Zyuzin   (2005-04-28 17:27:00) [49]

>ANB ©   (28.04.05 17:22) [20]
ID в таблицы типа BigInt и усе... никаких Identity. Все "автоинкрементирование" виртуальное... на уровне приложения осуществляется, я понимаю что это ни есть гуд, только вот другого способа я так и не нашел...


ANB   (2005-04-28 17:22:00) [50]


> Max Zyuzin ©   (28.04.05 17:19) [19]
- ты не понял вопроса, как ты засовываешь свой сгенеренный ID в таблицу ? Если у нее ID автоинкрементальный ?


Max Zyuzin   (2005-04-28 17:19:00) [51]

>ANB ©   (28.04.05 17:09) [16]
Я про триггеры и не говорил, я вообще использую такую конструкцию только для добавления в master-detail на "лету", что бы все добавлялось в одной быстрой транзакции, я сначала получаю ID master-а вышеуказаным способом, потом в одной транзакции все толкаю сразу в обе таблицы, вот.


ANB   (2005-04-28 17:15:00) [52]


> Fay ©   (28.04.05 17:10) [17]
триггера на таблицы в MS SQL в принципе BEFORE и есть . . . А разве не так ?


Fay   (2005-04-28 17:10:00) [53]

Max Zyuzin ©   (28.04.05 17:03) [15]
Где это Вы видели триггеры BEFORE в MSSQL?!


ANB   (2005-04-28 17:09:00) [54]


> Max Zyuzin ©   (28.04.05 17:03) [15]
- см.

> ANB ©   (28.04.05 16:46) [13]


Max Zyuzin   (2005-04-28 17:03:00) [55]

>ANB ©   (28.04.05 16:52) [14]
Я вот согласен с msguns ©   (28.04.05 13:06) [7] тоже порылся по форумам, почитал макулатуру, и решил что это и есть самый оптимальный способ.


ANB   (2005-04-28 16:52:00) [56]


> msguns ©   (28.04.05 16:28) [12]
- слушай, а чего это мы с тобой бодаемся, если автор топика давно свалил ?


ANB   (2005-04-28 16:46:00) [57]


> Я это предлагал ?
а как ты проинсертишь запись с этим сгенеренным ID ? Инсерт в студию !


msguns   (2005-04-28 16:28:00) [58]

>ANB ©   (28.04.05 16:07) [11]
>- твой способ набъет мозоли юзеру.

Каким образом, если не секрет ?

>Фактически, ты предлагаешь не использовать автоинкрементальные поля.

Я это предлагал ?


ANB   (2005-04-28 16:07:00) [59]


> Не взирая на погоду и мозоли ;)
- твой способ набъет мозоли юзеру. Зачем изобретать велосипед, если он уже изобретен ? Фактически, ты предлагаешь не использовать автоинкрементальные поля. А если они уже есть в базе и убрать ты их не имеешь права ?
Хе, видел давеча хохму : таблица в MS SQL с единственным полем - автоинкрементальным ID. Интересно, как на нее инсерт написать ?


msguns   (2005-04-28 15:56:00) [60]

>ANB ©   (28.04.05 15:40) [9]
>- читай топик ("до" не надо, нужен аналог ретурнинг Oracle).

С этим согласен.

>- не надо его обманывать. В нем есть штатные функции для этих целей. А это изгал.

С этим нет. Не надо заставлять всех ходить в таких же тапочках, как у тебя. Не взирая на погоду и мозоли ;)


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо