powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / одновременная вставка данных в master и detail
25 сообщений из 45, страница 1 из 2
одновременная вставка данных в master и detail
    #39326289
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Понимаю вопрос фундаментальный, но не могу сам его решит. Необходимо вставить данные в главную таблицу, получить id, и вставить его в подчиненную. Пробовал вот так:

Код: sql
1.
2.
3.
4.
5.
execute block as declare ID1 int; declare ID2 int; begin
EXECUTE PROCEDURE NEW_PROCEDURE('1', '33000', 'be0ad759-ee6a-4a21-b5f9-ed71f1eba54c00', 'Новое оборудование') returning_values :ID2;
EXECUTE PROCEDURE NEW_PROCEDURE2('1', :ID2, '13.10.2016', 'От 13.10.2016 № 1', 'Поступления');
EXECUTE PROCEDURE NEW_PROCEDURE2('1', :ID2, '13.10.2016', 'В составе Новое оборудование, в составе Новое оборудование', 'В составе');
end;



но проблема в том что строк может быть +1000 и тут я естественно попадаю на ограничения, разделить запрос на несколько не могу(если есть ошибка то надо отменять все записи)
как быть?
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326297
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormooreразделить запрос на несколько не могу(если есть ошибка то надо отменять все записи)
как быть?
Прочитать про транзакции и чем они отличаются от запросов. Ну и savepoints до кучи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326298
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fedormoore!
You wrote on 13 октября 2016 г. 14:19:04:

Fedormoore> разделить запрос на несколько не могуиз-за?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326304
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийHello, Fedormoore!
You wrote on 13 октября 2016 г. 14:19:04:

Fedormoore> разделить запрос на несколько не могуиз-за?



да мне не лень, я повторюсь - если есть ошибка то надо отменять все записи
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326307
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fedormoore!
You wrote on 13 октября 2016 г. 14:27:35:

Fedormoore> да мне не лень, я повторюсь - если есть ошибка то надо отменять все записиа кто мешает?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326313
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа кто мешает?
Ну не знает пациент о транзакциях, чего пристал?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326318
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 13 октября 2016 г. 14:37:45:

Dimitry Sibiryakov> Ну не знает пациент о транзакциях, чего пристал?..а мож у него клиентская библиотека шибко замороченная неестественным интеллектом с автокоммитом
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326320
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа мож у него клиентская библиотека шибко замороченная неестественным интеллектом с
автокоммитом

Дык проблема-то не в потенциальном наличии неестественного интеллекта у библиотеки, а
кинетическом отсутствии естественного...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326333
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так рад дать вам повод побздеть, а то смотрю парни сидят, скучаю, и работать вроде не охота и поговорить ни о чем..
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326339
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да шо ж за день такой сегодня!
как-то кучно пошли...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326340
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormooreя так рад дать вам повод побздеть, а то смотрю парни сидят, скучаю, и работать вроде не охота и поговорить ни о чем..
Слово "транзакция" прозвучало уже черте-сколько раз. Ты бы прочитал что это такое для начала. А потом подумал, как оно соотносится с тем, что тебе надо.
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326347
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

календарь сбился наверное. Хотя у меня вроде четверг.
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326350
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, сегодня ж 13-е!
хоть и не пятница
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326351
crazypiggy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
execute block as declare ID1 int; begin
insert into table1 (field1, field2) values ('45345', '33000') returning id into :ID1;
insert into table2 (id) values (:id1);
end;


Это подойдет?
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326355
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crazypiggy
Код: sql
1.
2.
3.
4.
execute block as declare ID1 int; begin
insert into table1 (field1, field2) values ('45345', '33000') returning id into :ID1;
insert into table2 (id) values (:id1);
end;


Это подойдет?

спасибо, но нет, это тоже самое что и у меня
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326361
crazypiggy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините не все прочел.
Вам действительно необходимо прочитать о транзакциях. Задача не сложная
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326687
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormoore, ничего проще? Вставляй в detail таблицу и всё!

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SET TERM ^;
CREATE OR ALTER TRIGGER master__TR_BIU
  FOR master
  ACTIVE BEFORE INSERT OR UPDATE
  POSITION 0
AS
BEGIN
  IF (NOT(NEW.id IS NOT NULL AND NEW.id <= GEN_ID(master__GEN, 0))) THEN
    NEW.id = GEN_ID(master__GEN, 1);
END^
SET TERM ;^

SET TERM ^;
CREATE OR ALTER TRIGGER detail__TR_BIU
  FOR detail
  ACTIVE BEFORE INSERT OR UPDATE
  POSITION 0
AS
BEGIN
  UPDATE OR INSERT INTO master (id) VALUES (NEW.id)
    MATCHING (id)
    RETURNING id INTO NEW.id;
END^
SET TERM ;^
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326735
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormoore, вообще-то такое надо решать так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
StartTransaction;
Try
 AddHeader;
 While Condition Do
  AddDetail;
 Commit;
Except
 Rollback;
 Raise;
End;


С помощью какого инструмента ты собираешь выражение и его выполняешь?
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326762
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MikeDD, IBExpert (2012.5.19.1), редактор скриптов
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326767
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

это такой "тонкий" троллинг ТС или ты действительно не понимаешь что чепуху написал?
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326776
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev, это такой "тонкий" троллинг ТС или ты действительно не понимаешь что чепуху написал?Ну, маленько накосячил в триггере detail. Думаю, ТС поподробнее изучит триггеры и найдет косячок.
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326780
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_dev, маленько?! а по мне так это луче "троллингом" назвать, твой триггер я понял
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326791
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormoore,

Ну а теперь пойми, что такое "транзакция", и почему именно ей принимают/откатывают изменения.
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326800
fedormoore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery, я имею представление что такое транзакция, все так настойчиво мне советуют почитать, что я сам начал сомневаться и перечитал еще раз и про транзакцию и про запросы, но не вижу я связи как мне это может помочь сохранить ссылочную целостность. У меня есть два варианта вставки данных, 1 - когда я знаю id master и могу его вставить в datail 2 - когда я не знаю id master, но мне нужно его узнать для того чтобы вставить в datail.
Вы(users) 15 сообщений в теме написали и полный бред, то про пятницу то про 13, вам если конкретно написать не чего то не пишите, а то как бабки на базаре ничего путнего не сказала зато выговорилась.
ПРОСТИТЕ НАКИПЕЛО...
...
Рейтинг: 0 / 0
одновременная вставка данных в master и detail
    #39326804
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedormoorerdb_dev, маленько?! а по мне так это луче "троллингом" назвать, твой триггер я понял"Маленько" - понятие субъективное. Троллига там нет, а я опять прочел лишь первую половину вопроса. :)
Со второй половиной всё еще проще - стартуешь write транзакцию , накидываешь в БД строки (хоть по одной, хоть по десять) в try блоке и если всё хорошо, делаешь транзакции Commit.
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / одновременная вставка данных в master и detail
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]