Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизТригер в sql server Найти похожие ветки
← →
aaaaa (2008-09-01 16:09) [0]в базе на таблицу по after insert есть триггер, который тож инсертит что-то там в другую табл.
код моего добавления
ADoConnection.BeginTrans;
q.Insert;
q.FieldByName("A").AsString := ";sdfg";
q.Post;
ADOConnection.commit;
проблемма в том, что теперь первичный ключ таблицы запроса после вставки равен тому ключу, который вставляет триггер:(. Я так понимаю @@IDENTITY
Как правильно сделать?
← →
Ega23 © (2008-09-01 16:13) [1]
> Как правильно сделать?
Я так понимаю, что у тебя MSSQL.
Читать в BOL разницу между @@IDENTITY, SCOPE_IDENTITY() и IDENT_CURRENT.
Как раз твой случай там подробно описан.
← →
aaaaa (2008-09-01 16:18) [2]
> Ega23 © (01.09.08 16:13) [1]
разницу я знаю(пробежал мельком), но ведь это занчение - @@IDENTITY - берет запрос(ADO), запросу-то как мне указать, откуда брать последний инсерт? Он правильно и поступает, что берет именно @@IDENTITY... Не знаю, что и делать, ведь эта переменная тока для чтения, вроде?
← →
Ega23 © (2008-09-01 16:39) [3]Блин.
with ADODataSet do
begin
CommandText := "Set noCount ON; " +
"Insert into Table1(.....) Values (.....); " +
"Select Result = Scope_Identity()";
try
try
Open;
ID := FieldByName("Result").AsInteger;
except on E : Exception do
.......
end;
finally
Close;
end;
end;
← →
aaaaa (2008-09-01 17:04) [4]
> Ega23 © (01.09.08 16:39) [3]
спасибо.
....
блин, мне менять TADOQuery на TADODataSet из-за этого?
← →
Ega23 © (2008-09-01 17:12) [5]
> блин, мне менять TADOQuery на TADODataSet из-за этого?
Можешь не менять. Но я бы посоветовал использовать TADODataSet там, где возвращается набор данных и TADOCommand там, где не возвращается.
← →
Ega23 © (2008-09-01 17:13) [6]Да, для TADOQuery тогда вместо CommandText подставь SQL.Text
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c