Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом
какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
Спасибо
Re: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте Grog, Вы писали:
G>Допустим есть таблица mytab;
G>mytab G>------ G>MyTabID PK G>MyTabInfo
G>Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом G>какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
G>Спасибо
SELECT @@IDENTITY
Re[2]: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте Flamer, Вы писали:
F>Здравствуйте Grog, Вы писали:
G>>Допустим есть таблица mytab;
G>>mytab G>>------ G>>MyTabID PK G>>MyTabInfo
G>>Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом G>>какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
G>>Спасибо
F> F>
F>SELECT @@IDENTITY
F>
Маленькое дополнение:
Хотелось бы знать структуру таблицы, а именно, есть ли у нее на инсерт триггер. Если есть и в нем есть инсерты, то надо использовать
SELECT @id = SCOPE_IDENTITY()
иначе @@IFENTITY вернет последний id инсерта, который был в триггере.
Попался на это в свое время
Re[3]: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте andik, Вы писали:
A>Здравствуйте Flamer, Вы писали:
F>>Здравствуйте Grog, Вы писали:
G>>>Допустим есть таблица mytab;
G>>>mytab G>>>------ G>>>MyTabID PK G>>>MyTabInfo
G>>>Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом G>>>какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
G>>>Спасибо
F>> F>>
F>>SELECT @@IDENTITY
F>>
A>Маленькое дополнение: A>Хотелось бы знать структуру таблицы, а именно, есть ли у нее на инсерт триггер. Если есть и в нем есть инсерты, то надо использовать
A>
A>SELECT @id = SCOPE_IDENTITY()
A>
A>иначе @@IFENTITY вернет последний id инсерта, который был в триггере.
Нет ничего. Просто я из VC++ делаю INSERT в простую таблицу, и мне надобно,
что бы я узнал под каким ID была записана эта запись, что бы сделать ссылку на нее в другой таблице.
Т.е. я просо выполняю следующее за INSERT'ом query — "SELECT @@IDENTITY" и как мне получить это значение? Из VC++?
Тут же нет колонок?
Как получить этот ID в какую-нить переменную?
Re[4]: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте Grog, Вы писали:
G>Нет ничего. Просто я из VC++ делаю INSERT в простую таблицу, и мне надобно, G>что бы я узнал под каким ID была записана эта запись, что бы сделать ссылку на нее в другой таблице. G>Т.е. я просо выполняю следующее за INSERT'ом query — "SELECT @@IDENTITY" и как мне получить это значение? Из VC++? G>Тут же нет колонок? G>Как получить этот ID в какую-нить переменную?
можно так
SELECT @@IDENTITY AS ID
т.е. ты хочешь сделать так:
conn.Execute("INSERT");
RS = conn.Execute("SELECT @@IDENTITY AS ID")
RS.Fields("ID").Value
Но я сейчас точно не уверен правильно ли это отработает
Лучше может все это в хранимой процедуре сделать
Re[5]: Как узнать ID сразу после INSERT в SQL Server 2000?
Стоит, наверное, это всё ещё в транзакцию обернуть...
Здравствуйте AndreyT, Вы писали:
AT>Здравствуйте andik, Вы писали:
A>>Лучше может все это в хранимой процедуре сделать
AT>А что мешает сделать в пределах одного батча?
AT>
AT>conn.Execute(" DECLARE @MyID int INSERT ... VALUES (...) SET @MyID=@@IDENTITY ...");
AT>
Евгений Коробко
Re[7]: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте Евгений Коробко, Вы писали:
ЕК>Стоит, наверное, это всё ещё в транзакцию обернуть...
Я привел лишь минимально необходимый фрагмент кода чтобы подчеркнуть мысль.
Использовать ли explicit транзакцию и что тут понадобится, @@IDENTITY или SCOPE_IDENTITY, я сказать не могу.
Это зависит от твоих условий.
Конечно, явную транзакцию использовать рекомендуется.
Re: Как узнать ID сразу после INSERT в SQL Server 2000?
Здравствуйте Grog, Вы писали:
G>Допустим есть таблица mytab;
G>mytab G>------ G>MyTabID PK G>MyTabInfo
G>Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом G>какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
G>Спасибо
Здравствуйте Grog, Вы писали:
G>Допустим есть таблица mytab;
G>mytab G>------ G>MyTabID PK G>MyTabInfo
G>Я делаю INSERT в эту таблицу. Соответственно, в MyTabID будет проставлено автоматом G>какое-то значение. А вот как мне это значение сразу вставить в другую таблицу (т.е. сделать ссылку на эту запись из другой таблицы?)
G>Спасибо
Используй глобальную переменную @@IDENTITY — возвращает значение ключевого столбца последней вставленной записи(соответственно надо вставлять по одной)
Re[2]: Как узнать ID сразу после INSERT в SQL Server 2000?