Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chAlx
Собственно вопрос

Цитата:
Дайте пример заполнение мастер детайл (инвойс) одним хранимой процедурой?    

Если бы mrUlugbek поставил себе задачу

Цитата:
 проблема в убегающем автоинкременте, который по-любому должен оставаться независимым от  отката транзакций.

То давно бы уже решил ее сам, заменив пункт вызов процедуры из

Цитата:
Try
СтартТранзакция
вызов процедуры
Коммит
except
Роллбек  

на выполнение одного Insert для мастера и N для detail, используя тот же TIBCSQL из IBDAC.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 13:49 30-01-2015 | Исправлено: OXDBA, 16:03 30-01-2015
Andryshok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что тут сложного? Вопрос именно в том что чел не знает как получить занчение генераторного поля мастера, как его получить я писал выше. Алгортим:
-старт транзакции
-вызов нужной процедуры/процедур сколько нужно раз для массива данных
-завершение транзакции
 
Усе
А выполнять это все в одной транзакции или в мильене это решение разработчика.

Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 16:41 30-01-2015 | Исправлено: Andryshok, 16:46 30-01-2015
mrUlugbek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
Пример дайте если есть  
Вот Firebird поддерживает тип массив..
 
Пример
 
Create Procedure Invoice
(id integer)
if id=-1 then
insert into masttable(gen(id,1) )
returning id into :mastID
 ProcedureDetailinsert(-1,mastID,tovar)
end
 
Create Procedure detail
(id integer
,mastid integer
,tovarID [10, 500] -- пример массив параметр допустим максимальный будет 500    )
 
вот не знаю как получить данные от клиента
 
примерно так будет
 
count=Tovarid    --- Узнаем состав инвойса
 
for mass to count
   insert into detailinsert (id,mastid,tovar[mass])
 
 
 
Ладно буду использовать обычный кешапдейт без процедуры  
try
start
except
rollback
end  
 
 
 

Всего записей: 878 | Зарегистр. 04-04-2011 | Отправлено: 10:06 31-01-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ кто то тестил FireBird 3. Очень интересуют пакеты.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 10:50 05-02-2015
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard
А что интересует? Работают пакеты, как описано в документации. В IBExpert еще рюшками и ленивым режимом не обвешаны, но автор експерта над этим работает.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 19:34 05-02-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
Интересует продуктив. Можно ли ставить?
Есть около 200 раз на FB, вес около 2 гигов каждая. Работают на 2.5. Стабильность прежде всего.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 11:08 06-02-2015
noisy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Форумчане, может у кого есть дситрибутив FBScanner Community Edition ?
 
ссылка http://ib-aid.com/free/FBScanner25Community.zip не существует

Всего записей: 983 | Зарегистр. 30-05-2002 | Отправлено: 11:20 06-02-2015
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard
Я бы не ставил. Да и не ставлю. Хотя текущая бета 3.0 по заявлениям главного бета-тестера стабильнее чем релиз 2.5.0, но тем не менее еще могут всплыть нюансы. Тем более на двух сотнях установок. Но погонять тройку на паре установок поближе в принципе можно, если есть ресурсы (читай: свободный разработчик БД, который сможет в случае чего быстро поправить какой-то нюанс). Следует иметь в виду, что явные и неявные джойны в тройке смешивать  нельзя. Тоесть если в 2.5.Х такой запрос проходил
 
select a.f1, b.f2, c.f3
  from a, b
  join c on a.id = c.a_id
  where ...
 
то в тройке это уже не проканает.
 

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 11:40 06-02-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
 
Спасибо за пример. Но по факту скажу что такое писать не по феншую, в принципе всегда пишем через Join так как переброс в другую СУБД аля Oracle etc.. будет проще. Стараемся выдерживать стандарты SQL.  
 
Потестить стоит. Заодно увидим как пройдет трансплантация с одного типа на другой.
 
Спасибо за полезную информацию.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 12:16 06-02-2015
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что случилось? На http://web.firebirdsql.org/download/snapshot_builds/win/3.0/ появляются новые архивы содержащие только examples.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 15:07 14-02-2015
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
 
Первый же файл, Firebird-3.0.0.31644-0_Win32.7z, с датой-временем 2015-02-15 09:02:38, содержыт все файлы сервера. Так что ничего не случилось

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 15:15 15-02-2015
mrUlugbek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как правильно установить из снапшота?Если можно по шагам
Windows 7 64 bit
Чет не получается у меня коннектиться из снапшота.
Скачал инсталлер Firebird 3 beta 1 установил создал юзера при установке запустил как сервис
Ibexpert коннектился и открыл employee.fbd  
Удалил Firebird3 beta  Хочу из снапшота работать чета не получается  
Заранее благодарен
 

Всего записей: 878 | Зарегистр. 04-04-2011 | Отправлено: 10:49 17-02-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ а кто то знает как прикрутить Git/Mercurial для IBExpert?
Как контролировать версии исходников?

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 16:22 25-02-2015
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Народ а кто то знает как прикрутить Git/Mercurial для IBExpert?

Думаю, никак.

Цитата:
Как контролировать версии исходников?

IBExpert умеет хранить историю, вкладка version history. Не git, конечно, но может быть полезно.

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:11 26-02-2015
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard

Цитата:
Народ а кто то знает как прикрутить Git/Mercurial для IBExpert?  
Как контролировать версии исходников?

Наша практика показала, что единственный нормальный способ разработки базы данных - это инкрементальные скрипты. Тоесть, есть скрипт (или скрипты), создающие некую эталонную базу данных. Этот скрипт создается один раз (isql -x или Extract Metadata в IBExpert - неважно), обзывается, например, ethalon.sql и никогда больше не меняется. После того, как в этой эталонной базе разработитчик добавит, например, новую процедуру, он создает скрипт, который делает create or alter procedure и обзывает этот скрипт update_0001.sql. Потом кто-то в базе добавляет новую таблицу с некоторыми данными и вьюхой поверх нее. Без пробем - скрипт с create table, create view и массовыми insert.
 
Все эти скрипты отлично ложатся в любую систему контроля версий и, что не менее важно, дают возможность воссоздать в любой момент на любой машине эталонную базу данных, или базу данных любой версии. Ну и все прочие плюшки вроде "кто сделал вот эту фигню" или "Вася, почему в репозитории до сих пор нету вооон той процедуры".

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 11:07 26-02-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
Спасибо. Так и делаем пока, но думали может есть возможность держать напрямую в процедуре контроля версий.
 
exteris
Спасибо.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 15:05 26-02-2015
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard
+1 к инкрементальным скриптам
более того, ПО должно проверять версию БД и требовать обновить (а то и вовсе не работать с БД старой версии)

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 16:48 26-02-2015
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ant0ni02004
Тут я  с вами согласен. Со скриптами и с обновкой, так и работают у нас продуктивы.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 17:34 26-02-2015
chAlx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa

Цитата:
Наша практика показала, что единственный нормальный способ разработки базы данных - это инкрементальные скрипты.

Поэтому вы выбрали редкую СУБД без лога транзакций ;) Хотя не знаю, помогает ли на практике лог при обновлении метаданных.
 
По-идее, из таблиц version history как раз и можно вытаскивать всю эту информацию: кто добавил, когда, что. Сравнение версий там вообще замечательное -- с sql-скриптами такого не получишь. Плюс в том, что это всё генерится автоматом и не требует никаких телодвижений (собрать скрипт, протестировать запуск на необновлённой базе, выложить в репозиторий).
 
Минус в сложности инкрементального апдейта (у вас, видимо, несколько одинаковых баз, на которые такие скрипты удобно накатывать). Да и сгенерить recreate script на конкретную дату непросто. Откатываться в прошлое в обоих вариантах довольно неудобно по-сравнению с обычным бэкапом.
 
Видимо, надо всё же разделять контроль версий и управление апгрейдами/бэкапами. Взять, например, добавление параметра в процедуру. Для апгрейда нужен sql-скрипт, отключающий все зависимые процедуры, обновляющий нужную, пересоздающий зависимые процедуры по-новой. При этом не особо важно, кто и как это изменение внёс. А для контроля и дебага как раз важно, кто и что именно: в истории версий мы увидим одну строчку с новым параметром, а не весь скрипт со всеми зависимостями.
 
Остаётся придумать актуальный способ выдачи данных для git и предложить автору IBExpert добавить соответствующий экспорт в контроль версий, который уже есть.

Всего записей: 1691 | Зарегистр. 19-03-2003 | Отправлено: 18:24 26-02-2015
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa

Цитата:
Наша практика показала, что единственный нормальный способ разработки базы данных - это инкрементальные скрипты.  

Можно еще и хранить скрипт создания БД (можно разделенный по проектам/ предметным областям в БД)
При написании инкрементальных скриптов и после их выполнения/проверки - вносим изменения(или формируем) в общий скрипт и также храним его в системе контроля версий.

Всего записей: 1599 | Зарегистр. 01-03-2004 | Отправлено: 00:09 27-02-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru