Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.21;
Скачать: CL | DM;

Вниз

INSERT в MS SQL7.0   Найти похожие ветки 

 
skiph ©   (2002-02-12 09:03) [0]

Есть таблица, скажем, c полями Field1 (varchar), Field2 (image) и ключевым автоинкриментным полем ID (на самом деле полей больше).
Так получается, что реальное значение поля Field1 я могу узнать только после создания записи в таблице, так как его значение косвенно зависит от значения поля ID. Т.е.:
1) Создаю запись в таблице, вставляя в Field1 NULL.
2) Расчитываю значение Field1.
3) Нахожу созданную запись
4) Update
То есть мне необходимо сразу после Insert узнать и запомнить значение ID. Как это сделать? SELECT использовать нельзя, поскольку при одновременной работе нескольких пользователей пустых Field1 может быть несколько, а отсылать для идентификации blob (значение Field2) считаю не рациональным.


 
Леша   (2002-02-12 09:22) [1]

Ну в приципе функция @@INDENTITY возвращает последнее ID для текущей сессии.


 
Roma ©   (2002-02-12 13:17) [2]

... @@identity

PS: Просто очепятка, а человек будет искать...
PPS: Еще хорошо если будет... ;))) (nothing personal)


 
xenon ©   (2002-02-20 21:19) [3]

Если расчеты не сложные, сделай триггер:
CREATE TRIGGER AI_таблица FOR таблица
ACTIVE
AFTER INSERT
BEGIN
Значение = ...
NEW.Field1 = Значение
END


 
Praco ©   (2002-02-21 09:33) [4]

> Леша
@@identity - не функция, а глобальная переменная. Она хранит последнее id не текущей сессии, а всего сервера. Нет гарантии, что между вставкой записи и чтением @@identity не произошла вставка где-то еще.
> xenon ©
В MS SQL все триггера AFTER INSERT, но при множественной вставке будет вызван триггер один раз. Можно обработать в нем таблицу inserted.
> skiph ©
Не используй identity (ИМХО). Используй GUID. Сам его создавай и вставляй.



 
amamed_3071 ©   (2002-02-21 11:09) [5]

Q.Sql.Clear;
Q.SQl.Append("INSERT INTO ACTIVE (Filed1,Field2) Values....");
Q.SQL.Append("select @@identity lastref");
q.active:=true;
l:=q.fieldbyname("lastref").asinteger



Страницы: 1 вся ветка

Текущий архив: 2002.03.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-66971
Леша
2002-02-06 07:20
2002.03.21
Прелагаю обсудить курьезы в фантастических произведениях и ответить на вопрос: Нужна ли логига в фонт. произведении?


4-67050
DNT
2001-12-30 20:43
2002.03.21
Как определить handle активного окна?


1-66891
Vacheslav
2002-03-05 19:09
2002.03.21
Как обработать событие перекрытия компонентов?


3-66791
Фадеичев Андрей
2002-02-21 16:30
2002.03.21
Delphi и сетевые базы данных.


3-66758
Sheva
2002-02-21 12:17
2002.03.21
Dos-Win кодировки.