Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Вниз

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




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.048 c
1-66828           Dim                   2002-03-06 15:32  2002.03.21  
Pеагировать на правый Click мыши.


1-66869           MystiX                2002-03-05 17:58  2002.03.21  
Про оперативку


1-66929           BDRON                 2002-03-05 00:46  2002.03.21  
Шифрование данных


14-66996          Yuri Btr              2002-02-08 11:04  2002.03.21  
Подкиньте идею


7-67022           nika_rgups            2001-12-18 21:00  2002.03.21  
MP3 coder