Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
добрий ден !

есть три таблицы , параметры для добавления в 1 и 2 -ую таблицы поступают с клиента , параметры добавления для 3 могут быть получены из базы .

т1
т2 ( связана с т1)
т3 ( связана с т2)


таблица 1 связана внешним ключом с 2 , а 2 в свою очередь с 3.

при добавлении записи в таблицу_1 получаем identity ключа и добавляем несколько дочерних записей по полученному ключу в таблица_2 , там в свою очередь также получая identity по каждой записи добавляем несколько записей в таблицу_3.

Вопросы:

1. таблица_1 здоровенная , 2 и 3 мелкие , с клиента (ASP.NET) получаем здоровенный список параметров для вставки в таблицу_1, получаем идентити номер и с клиента на этот идентити вставляем несколько записей в таблицу_2 , при каждой вставке по ключу вставленной записи ( из таблицы _2) добавляем несколько записей в таблицу_3.

Для вставки записей в первые две таблицы уместно использовать механизм транзакций на клиенте из АСП.НЕТ, но как быть с 3 таблицей (((
18 авг 11, 14:39    [11139857]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
ну, товарищи варяги...
18 авг 11, 14:47    [11139919]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
A MSSQL то причём?
18 авг 11, 14:55    [11139977]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
ну, товарищи варяги...

А проблема то в чем ?
18 авг 11, 14:59    [11140019]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5117
# Darth Vader #,
ответ зависит от логики и требований к вашей системе
18 авг 11, 15:09    [11140105]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
igor2222
A MSSQL то причём?


ну как при чем, скулевый сервант


Дедушка
# Darth Vader #,
ответ зависит от логики и требований к вашей системе


надо гарантированно через механизм транзакций вставить в три таблицы записи... я уже описал сложность выше ( про 3 таблицу)
18 авг 11, 15:14    [11140140]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
я уже описал сложность выше

И какая же сложность то ? Открыть транзакцию ? Провести в ней действия ? Или закрыть ?
18 авг 11, 15:17    [11140178]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
# Darth Vader #
igor2222
A MSSQL то причём?

ну как при чем, скулевый сервант

Насколько я понял у Вас проблема передать данные/получить идентити от АСП. Передавайте серверу сразу три таблицы и обрабатывайте процедурой. Да и АСП умеет вычитать идентити для каждой вставленной строки. поэтому и спрашиваю, MSSQL причём?
18 авг 11, 15:23    [11140270]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
igor2222
# Darth Vader #
пропущено...

ну как при чем, скулевый сервант

Насколько я понял у Вас проблема передать данные/получить идентити от АСП. Передавайте серверу сразу три таблицы и обрабатывайте процедурой. Да и АСП умеет вычитать идентити для каждой вставленной строки. поэтому и спрашиваю, MSSQL причём?


передавать сразу три таблицы?

ну конечно можно , но посмотрите сами...

АСП.НЕТ кидаем в таблицу 1
сервер - получаем идентити от скуля в АСП.НЕТ
АСП.НЕТ по полученной идентити формируем наборку для второй таблицы , но для каждой вставленной строки из таблицы_2 надо получить идентити на стороне сервака ( подчеркиваю) и вставить данные в 3 таблицу опять же на стороне сервака ибо данных для 3 таблицы на клиенте АСП нет и нет смысла тащить их наверх чтобы потом обратно закинуть в базу...


если Вы АСП.НЕТ чик то просветите как пользуясь только механизмом транзакций АДО.НЕТ реализовать , может отказаться от идентитити полей на стороне сервака или как?
18 авг 11, 16:17    [11140759]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
но для каждой вставленной строки из таблицы_2 надо получить идентити на стороне сервака ( подчеркиваю) и вставить данные в 3 таблицу опять же на стороне сервака ибо данных для 3 таблицы на клиенте АСП нет и нет смысла тащить их наверх чтобы потом обратно закинуть в базу...

И в чем проблема с "получить идентити на стороне сервака ( подчеркиваю)" ?
Как будто АСП.нет получает это идентити не от сервера, а из секретного места

Сообщение было отредактировано: 18 авг 11, 16:21
18 авг 11, 16:18    [11140777]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Я не АСПнетчик, поэтому и намекал, что вопрос собственно в тот форум. Что же касается SQL то есть сразу 3 варианта. 1.Никто не мешает забирать все идентити при вставке в свой массив. 2.Никто не мешает на лету генерить например GUID (чтобы обеспечить "сквозную" уникальность) 3.Как я уже и говорил, отдавать не тейбладаптером построчно, а целиком переменную типа TABLE. Вам просто в другой форум. 50% АСПнетчиков работают с MSSQL.
18 авг 11, 16:25    [11140845]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
я знаю, что такое out параметры хранимок, с получением идентити как механизма проблемы нет...

давайте так

вот структура таблиц в простом варианте

Таблица_1

ID1 (int identity)
Name_Bla_Bla_Bla

Таблица 2

ID2 (int identity)
ID1(просто int для связи с таблицей_1)
Name_Bla_Bla


Таблица_3

ID3 ( int identity)
ID2 (просто int для связи с таблицей_2)
Name_Bla_Bla_Bla


содержимое первых двух таблиц формируется наверху на АСП.НЕТ , содержимое третьей таблицы формируется динамически на серваке ( записи в таблицу 3 вставляются в зависимости от того что вставили во вторую таблицу и обращаться наверх к клиенту не надо)
18 авг 11, 16:27    [11140862]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
содержимое первых двух таблиц формируется наверху на АСП.НЕТ , содержимое третьей таблицы формируется динамически на серваке ( записи в таблицу 3 вставляются в зависимости от того что вставили во вторую таблицу и обращаться наверх к клиенту не надо)

Надо написать команду INSERT что ли ?
18 авг 11, 16:29    [11140884]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
ну да, во все три таблицы будут INSERT-ы ,

только ИНСЕРТ в 3 таблицу будет проходить по хитрому сценарию на стороне СЕРВАКА.


если бы данные надо было вставлять в две таблицы то гомно вопрос, на АСП.НЕТе две команды, оболочка в транзакцию и всё.. а вот драная 3 таблица портит всю гармонию, как ее пустить через трансакцию ума не приложу
18 авг 11, 16:32    [11140913]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
ну да, во все три таблицы будут INSERT-ы ,

только ИНСЕРТ в 3 таблицу будет проходить по хитрому сценарию на стороне СЕРВАКА.

По секрету. Вообзще все команды, включая INSERT, происходяит на стороне сервера
18 авг 11, 16:33    [11140933]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
# Darth Vader #
содержимое первых двух таблиц формируется наверху на АСП.НЕТ , содержимое третьей таблицы формируется динамически на серваке ( записи в таблицу 3 вставляются в зависимости от того что вставили во вторую таблицу и обращаться наверх к клиенту не надо)


А что, инсерт таблицы два не может week up триггер, который или сам вставит динамически или процедурку нужную завикапит?
Всё это естесственно в Вашей транзакции так и останется.
18 авг 11, 16:34    [11140937]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
Glory
# Darth Vader #
ну да, во все три таблицы будут INSERT-ы ,

только ИНСЕРТ в 3 таблицу будет проходить по хитрому сценарию на стороне СЕРВАКА.

По секрету. Вообзще все команды, включая INSERT, происходяит на стороне сервера


бугага, товарищ , ну вы меня за лоха то не держите))))))))))))) вы не догоняете
18 авг 11, 16:34    [11140939]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
igor2222
# Darth Vader #
содержимое первых двух таблиц формируется наверху на АСП.НЕТ , содержимое третьей таблицы формируется динамически на серваке ( записи в таблицу 3 вставляются в зависимости от того что вставили во вторую таблицу и обращаться наверх к клиенту не надо)


А что, инсерт таблицы два не может week up триггер, который или сам вставит динамически или процедурку нужную завикапит?
Всё это естесственно в Вашей транзакции так и останется.


вововово, можно чуть подробней...
18 авг 11, 16:35    [11140948]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
# Darth Vader #
бугага, товарищ , ну вы меня за лоха то не держите))))))))))))) вы не догоняете

Может потому, что вы пытаетесь объяснять все в терминах кода на ASP.NET ?
18 авг 11, 16:36    [11140950]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
# Darth Vader #
вововово, можно чуть подробней...

Куда ж еще подробней?
Создавайте ветку "Как написать триггер" с данными, которые должны вставляться на конкретном примере. Или БОЛ если вопрос "общего плана". CREATE TRIGGER
18 авг 11, 16:37    [11140956]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
# Darth Vader #
Member

Откуда: С ит колхоза
Сообщений: 7731
Glory
# Darth Vader #
бугага, товарищ , ну вы меня за лоха то не держите))))))))))))) вы не догоняете

Может потому, что вы пытаетесь объяснять все в терминах кода на ASP.NET ?


да, моя вина, сорри ...
18 авг 11, 16:38    [11140973]     Ответить | Цитировать Сообщить модератору
 Re: массированное добавление записей в три таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
DECLARE @Res1 table( ID int,Name varchar(50),....);
INSERT Table1
    OUTPUT INSERTED.ID, INSERTED.Name, INSERTED.....
        INTO @Res1
VALUES (N'aaaaa', GETDATE(), .....);

DECLARE @Res2 table( ID int,Name varchar(50),....);
INSERT Table2 ...
    OUTPUT INSERTED.ID, INSERTED.Name, INSERTED.....
        INTO @Res2
SELECT  ID, ..... FROM @Res1

INSERT Table3 ...
SELECT  ID, ..... FROM @Res2
18 авг 11, 16:48    [11141057]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить