Правильный способ использования auto-increment полей в FIBPIus
Правильный способ использования auto-increment полей в FIBPIus
В текущем состоянии наш запрос уже является редактируемым, мы можем вставлять новые записи, удалять записи существующие, а также редактировать значения полей Тем не менее пользователь должен самостоятельно указывать значение ключевого поля "Id", чтобы каждая запись была уникальной. Разумеется, мы можем переложить заботу о генерации уникальных значений на базу данных, написав соответствующий триггер, который при вставке новой записи будет автоматически получать новое уникальное значение из некоторого 1енерагора. Такой способ гарантирует уникальность значений, но не гарантирует правильность работы клиентского приложения.
Особенность использования генераторов при написании корректно работающих приложений на FIBPlus состоит в том, что мы должны получать новое значение генератора в приложении до того, как выполним запрос на вставку записи. Зачем это нужно? Дело в том, что, как уже было сказано, после выполнения любого модифицирующего запроса (кроме удаления) CategoriesDataSet автоматически выполняет запрос из RefreshSQL, подставляя в качестве условия текущие значения параметров. В нашем случае для подстановки надо использовать значение первичного ключа (поле "Id"). Если мы не получим его заранее, а будем генерировать его, используя триггер, то мы не сможем подставить значение параметра : "OLD_Id" в запрос RefreshSQL, а значит, не сможем перечитать измененную запись. Таким образом, если какие-то поля записи были изменены триггерами базы данных, то мы не увидим этих изменений, пока не переоткроем весь запрос целиком Если же мы сначала получим новое значение генератора, а потом вставим это значение наравне с остальными параметрами, то затем мы сможем использовать это же значение, чтобы "перечитать" текущую запись, и будем "в курсе" актуальных значений полей без излишних переоткрываний!
TpFIBDataSet позволяет автоматически получать и вставлять значения первичного ключа, используя генератор. Для этого нам необходимо заполнить некоторые дополнительные ключи в свойстве AutoUpdateOptions (рис. 2.24).
Нужно указать название генератора Categories_Id_GEN. Свойство WhenGetGenID может принимать три возможных значения:
wgOnNewRecord - получать значение генератора сразу после подготовки буфера для новой записи;
wgBeforePost - получать значение генератора непосредственно перед отправкой новой записи на сервер;
wgNever- не использовать механизм генерации ключевых значений.
В нашем примере мы укажем значение wgOnNewRecord, чтобы сразу видеть в CategoriesGrid те значения поля "Id", которые будут получены с сервера. Теперь мы можем запустить наше приложение и отредактировать какие-либо существующие записи и даже вставить новые записи (рис. 2.25).
Рис 2.24. Использование AutoUpdateOptions для генерации уникальных значений первичного ключа
Рис 2.25. Внешний вид "живого" запроса
Из рисунка видно, что было автоматически получено значение для поля "Id" равное 66
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Совет 26: Правильный подход к поиску
Совет 26: Правильный подход к поиску Человеку свойственно ошибаться, в том числе и в наборе поисковых запросов. Поисковые системы уже научились подсказывать пользователю правильный вариант, но следует учесть, что против них работают лучшие умы кибер преступной отрасли,
Глава 11 Правильный распад
Глава 11 Правильный распад К концу Второй мировой войны, перед тем как на Хиросиму и Нагасаки были сброшены атомные бомбы, в Нью-Мексико появилась компания Sandia National Laboratories. Расположенная рядом с более известными лабораториями Los Alamos, Sandia должна была продолжать основную
Auto Tuner
Auto Tuner Страница программы: http://www.4pockets.comСтатус: Shareware, $20Так, во что мы еще не превращали наш наладонник? В плеер, телефон, фотостудию, будильник – все было. А в настройщика для гитары – не пробовали? Только не падайте со стула – это вполне реально. После установки этой
12.4. Программа LinNeighborhood — правильный выбор
12.4. Программа LinNeighborhood — правильный выбор Доступ к совместно используемым ресурсам осуществляется с помощью программ smbclient и smbmount. Как их использовать, вы уже знаете. Не очень удобно, не правда ли? Конечно, если вы работаете в текстовом режиме и система X Window у вас не
19.2.2. Демон gated — правильный выбор
19.2.2. Демон gated — правильный выбор В последнее время демон gated используется чаще, чем стандартный routed. Объясняется это тем, что gated более гибок в конфигурировании и обладает большими возможностями, в частности, им поддерживаются протоколы RIP-2 и OSFP.Программа gated была
Что важнее: правильная аудитория или правильный контент?
Что важнее: правильная аудитория или правильный контент? Мы подошли к вопросу, который является предметом давнего спора между специалистами по рекламе. Так что же заслуживает большего внимания – поиск целевой аудитории или составление правильного текста? Один
Что такое FIBPIus?
Что такое FIBPIus? Предыдущие главы книги содержали описание самого сервера InterBase, но для практического его использования необходимо разрабатывать клиентские программы. Само название технологии Client/Server говорит о наличие двух сторон: сервера, который в нашем случае
Установка FIBPIus Tools
Установка FIBPIus Tools FIBPIus Tools - это эксперты для Delphi и C++ Builder, поставляющиеся в готовом, скомпилированном виде, поэтому для их установки в среде необходимо установить соответствующий пакет.На момент создания книги опубликованы FIBPIus Tools для Borland Delphi 3-7 и Borland C++ Builder 5-6. Если вы
Правильный отдых
Правильный отдых Некоторые считают, что у них просто нет времени заниматься спортом. В 99,9% случаев это отговорки собственного ленивого эго. Если Вы за день хотя бы раз заходите на такие сайты как вконтакте, одноклассники, читаете чьи-то ЖЖ, твиттеры, ленты новостей, если вы
КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register
КЛЮЧЕВЫЕ СЛОВА: auto, extern, static, register Одно из достоинств языка Си состоит в том, что он позволяет управлять ключевыми механизмами программы. Классы памяти языка Си - пример такого управления; они дают возможность определить, с какими функциями связаны какие переменные и
20.1.1. Простой способ использования команды shift
20.1.1. Простой способ использования команды shift Для обработки каждого передаваемого аргумента достаточно воспользоваться командой shift. Ниже приводится соответствующий сценарий:$ pg opt2#!/bin/sh# oPt21оор=0while [ $# -ne 0 ] # цикл выполняется до тех пор, пока остаются аргументы doecho $1shift
Правильный монитор
Правильный монитор Один из главных компонентов компьютера – это монитор, при покупке которого нужно быть особенно внимательным, так как именно от него зависит хорошее зрение и безопасность работы.До недавнего времени одной из негативных характеристик мониторов
Binaural Auto-Panner (process)
Binaural Auto-Panner (process) Binaural Auto-Panner — это эффект пространственной обработки звука, который вращает звук слева направо по круговой схеме. Эффект задерживает правый или левый каналы так, что звук доходит до каждого уха в разное время, обманывая мозг и заставляя его думать, что