Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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



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

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

Наверх





Память: 0.45 MB
Время: 0.005 c
1-66860
Oleg_EM
2002-03-05 16:53
2002.03.21
Создать Form в Runime ...


14-66969
Tosov
2002-02-06 17:21
2002.03.21
Сколько стоит час работы


14-66960
maks_f
2002-02-05 10:33
2002.03.21
структура файла excel


1-66843
Edelweiss
2002-03-08 01:47
2002.03.21
Вопрос по TreeView


3-66759
- Andrew -
2002-02-21 18:45
2002.03.21
Как записать картинку (Tiff, Bmp) в BLOB-поле?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский