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

Вниз

Тригер в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1220425410
DelphiLexx
2008-09-03 11:03
2008.10.12
в rxlib есть ф-ция ReplaceStr, есть ли аналог в самом Delphi


15-1219433767
{RASkov}
2008-08-22 23:36
2008.10.12
Математика


2-1218980426
demon
2008-08-17 17:40
2008.10.12
Помогите разобраться с простейшей программой на API


15-1219126004
vajo
2008-08-19 10:06
2008.10.12
Подскажите с драйвером?


2-1220874482
aaandy21
2008-09-08 15:48
2008.10.12
как связать написанную на Delphi DLL c VC?