![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с ADO под SQL Server [D7, MSSQL]
AlexGof © (2003-03-07 11:01:00)Помогите чайнику ! Есть два набора данных ADODataSet связанных ключевым полем kod через добавление одного набора в другой методом связывания в свойстве MasterField, при втавке записи в мастер таблице методом append, код ключевого поля еще не сгенерирован в этой таблице, а нужно вставить еще запись и в подчиненную (с ней связанную), а потом вместе сохранить или выполнить откат. Ведь кода ключа нет и связки при такой вставке не происходит. Пробовал открывать транзакцию и выполнять Post после вставки записи, но кода ключа так и не появилось. А если запись вставлять с Update, то код ключа будет, но нет возможности выполнить одновременный откат на обе таблицы. Будет выполнен откат только на дочернюю естественно. Если кто сталкивался с такой проблемой, то просьба помочь. Заранее благодарен
ermserg (2003-03-07 12:20:00) [1]>есть идентити с привязкой таблице можно и его использовать
IDENTITY_CARRENT(tablitsa)
sniknik (2003-03-07 12:00:00) [2]да пофиг сколько просто если во второй тоже есть инкремент и выывается не раз то значнение @@IDENTITY собьется, ну сделай переменную и сохрани
DECLARE @Iden Integer
BEGIN TRANSACTION
INSERT INTO Table1 (.....) VALUES (......)
SET @Iden @@IDENTITY
и после ей пользуйся (есть идентити с привязкой таблице можно и его использовать)
AlexGof (2003-03-07 11:39:00) [3]А если во вторую таблицу в дочернюю добавляется различное количество записей ?
sniknik (2003-03-07 11:27:00) [4]нашол тоже проблему
пишеш пакет команд и выполняеш (как оформить в виде тригера/процедуры/просто текста разници нет)
чтото подобное
ADOCommand.CommandText:=
"BEGIN TRANSACTION "+
"INSERT INTO Table1 (.....) VALUES (......) "+
"INSERT INTO Table2 (IDParent,....) VALUES (@@IDENTITY,......) "+
"COMMIT TRANSACTION";
ADOCommand.Execute;
это если ключ автоикремент, как я понял из вопроса так и есть, в 1 таблице он генерируется при вставке во вторую заносится его значение.
Smashich (2003-03-07 11:03:00) [5]ИМХО такие вещи надо реализовывать через тригерры