powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить значение генератора
47 сообщений из 47, показаны все 2 страниц
Получить значение генератора
    #39429800
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.
Есть 2 таблицы

Таблица замечаний
Код: sql
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.
CREATE GENERATOR GEN_ZAUVAG_ID;
CREATE TABLE ZAUVAG (
    ID            BIGINT NOT NULL,
    DATA_ROZGL    DATE NOT NULL,
    DATA_MAIL     DATE,
    DATA_CORRECT  DATE,
    ID_OBLAST     INTEGER NOT NULL,
    ID_RAJON      INTEGER NOT NULL,
    TIP           SMALLINT,
    ID_PROG       INTEGER,
    ZMIST         VARCHAR(2500),
    RESULTS       VARCHAR(1000),
    PRIMER        VARCHAR(20)
);
ALTER TABLE ZAUVAG ADD CONSTRAINT PK_ZAUVAG PRIMARY KEY (ID);

ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_OBL FOREIGN KEY (ID_OBLAST) REFERENCES OBLAST (ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_PRG FOREIGN KEY (ID_PROG) REFERENCES PROGS (ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_RAJ FOREIGN KEY (ID_OBLAST, ID_RAJON) REFERENCES RAJON (ID_OBL, ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_TIP FOREIGN KEY (TIP) REFERENCES TIP_ZAUVAG (ID) ON DELETE SET NULL;

CREATE DESCENDING INDEX IDX_ZAUVAG_DATE_ROZGL ON ZAUVAG (DATA_ROZGL);
/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/
SET TERM ^ ;
/* Trigger: TR_ZAUVAG_ID */
CREATE OR ALTER TRIGGER TR_ZAUVAG_ID FOR ZAUVAG
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  /* Trigger text */
  if (new.id is null) then
    new.id = gen_id(GEN_ZAUVAG_ID,1);
end
^
SET TERM ; ^


Таблица присланных примеров/файлов
Код: sql
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.
CREATE GENERATOR GEN_ATTACH_ID;

CREATE TABLE ATTACH (
    ID           BIGINT NOT NULL,
    ID_ZAUV      BIGINT,
    FILENAME     VARCHAR(250),
    FILECONTENT  BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    TIP_ATTACH   SMALLINT
);
ALTER TABLE ATTACH ADD CONSTRAINT PK_ATTACH PRIMARY KEY (ID);
CREATE INDEX IDX_ATTACH_ZAUVAG ON ATTACH (ID_ZAUV, ID);

/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/
SET TERM ^ ;
/* Trigger: TR_ATACH_ID */
CREATE OR ALTER TRIGGER TR_ATACH_ID FOR ATTACH
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  /* Trigger text */
  if (new.id is null) then
    new.id = gen_id(gen_attach_id,1);
end
^
SET TERM ; ^




Вопрос: При вставке записей в таблицу ZAUVAG генерируется триггером ID. Мне этот ID нужен в таблице прикрепленных файлов. Как получить присвоенный ID без предварительного Commit
--------------------------
Firebird 3.0.1.32609;
IBExpert 2017.3.12.1;
Windows 10 32-bit;
4Gb RAM;
SSD 512Mb + HDD 1 Tb;
Настройки по умолчанию
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429803
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

1. RETURNING
2. Следующее значение генератора можно получать до вставки
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429846
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

http://www.ibase.ru/generator/

p.s. надо будет дописать статью про sequence и проч.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429853
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
Я хочу уточни правильно ли я понял.
Мне в программе в переменную нужно получить значение генератора и при вставке в 2 таблицы использовать полученное значение.
Я правильно понял?
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429859
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

либо использовать insert ... returning, как сказал Денис, либо получить значение генератора в программе, и сразу вставить его в таблицу, и дальше это значение использовать как угодно.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429864
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

какие компоненты или какой язык используется при доступе к базе?
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429872
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, kdv имеет в виду, что если у тебя на клиенте формируется некий датасет, предположим, к таблице вида:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE my_rows
(
    row_id INTEGER NOT NULL,
    row_name VARCHAR(200) NOT NULL,
  CONSTRAINT my_rows__pk PRIMARY KEY (row_id),
  CONSTRAINT my_rows__uq UNIQUE (row_name)
);

запросом
Код: sql
1.
SELECT row_id, row_name FROM my_rows

, то запрос с клиента на вставку строки
Код: sql
1.
INSERT my_rows (row_name) VALUES (row_name) RETURNING row_id

поместит присвоенное триггером значение в поле "REC_ID" датасета. В FIBPlus такой финт работает, как в других компонентах доступа к ФБ - не знаю.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429883
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.
Приходит просветление :)
Использую ФИБы
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429887
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение:
Вставку делаю через Query. Returning вернет мне значение?
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429910
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, вернет, но в этом случае, не пытайся проверять на EOF, а сразу бери значение из поля и проверяй его на "не NULL".
...
Рейтинг: 0 / 0
Получить значение генератора
    #39429941
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,
Понял, спасибо, уже пробую
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430138
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,
Подскажите.
Не хочу плодить темы, но мой вопрос выплывает из уже обсужденного и решенного.
Работаю с ФБ через ФИБы.
Через Query произвел вставку. Все нормально.
После вставки делаю датасету рефреш - записи не видно. А если датасет закрыть/открыть запись видна.
Я понимаю что ФИБы на просмотр используют отдельную транзакцию.
Суть вопроса - как правильно поступить чтобы увидеть записи.

П.С. Не надо отправлять в ветку Делфи т.к. я знаю что многие из вас знают и ФИБы и Делфи.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430141
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

А вот и нет, "Дельфи тут никто не знает (с)"
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430142
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рефрешу нужен ПК, без ПК непонятно, что рефрешить. Как вариант решения проблемы: получать генератор заранее, присвоить его ИДу записи и потом решреш отработает штатно. транзакция пох, что отдельная, но таки да, пишущую перед рефрешем надо закоммитить (предпочитаю руками, лентяи по идее могут и авторефреш выставить, но это на любителя)
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430146
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,
Так и делаю. Новая строка уже закомичена, но я ее не вижу пока не закрою приложение.
Может нужно правильно ключи читающей транзакции выставить.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430165
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

прочитай что-нибудь про транзакции, и выставь "правильные ключи". Ты читающей транзакции влепил уровень изолированности snapshot, раз у тебя "записи видны после рестарта приложения". Классические грабли начинающего. Хотя в ФИБПлюс по умолчанию транзакции read_committed.

http://www.ibase.ru/ibtrans/
http://www.ibase.ru/ibx/ (параметры транзакций в фибплюсе точно такие же).
аналогично есть статья про транзакции в фибплюс

еще у меня есть даже видео
https://www. youtube.com/watch?v=n35L7gdw51Q

p.s. предварительно надо хоть что-то читать, и гуглом пользоваться.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430166
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, потому что твоя читающая транзакция не видит изменений пишущей. Надо подтверждать читающую транзакцию.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430171
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНадо подтверждать читающую транзакцию.
чего ахинею-то писать? readCommitted прекрасно видит чужие committed-изменения.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430174
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, это если у него читающая транзакция read_committed.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430183
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

а зачем читающей транзакции быть snapshot? тем более, что в фибплюсе, как я уже сказал, по умолчанию read committed?
Я описал причину, ты написал "надо рестартовать". Очень полезный и дельный совет.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430206
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чайникам не стОит юзать множественные транзакции.
до того как они поймут "нахрена это надо".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430239
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, rdb_dev
Не надо спорить.
Зашел в настройки читающей транзакции.
Там вообще ничего не было указано - пусто.
Выбрал readcommited.
Ситуацию попустило. Теперь вижу записи если закрыть/открыть датасет.
Рефреш по прежнему не помогает.

2Мимопроходящий:
Верну бумеранг назад.
Не стоит вообще с людьми общаться и давать советы если не можете высказывать свое мнение без всяких там "нахрена" и подобных выражений.
В соседнем топике, где обсуждали изменение ПДФ документа (признаю, Дмитрий, был не прав. Менять не имею права) вообще ругались, а согласно правил форума это запрещено.

Модератор: Если считаете, что правила нарушены - жмите кнопку "Сообщить модератору"
Указывать же, кто что может или нет - это называется "самовольная модерация", и она запрещена
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430257
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Модератор - Намек понят, учту. :)
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430262
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush...
Ситуацию попустило. Теперь вижу записи если закрыть/открыть датасет.
Рефреш по прежнему не помогает.
...
Ну что за ерунда.

Метод Refresh выполняется только для текущей записи. То есть, на той, на которой стоит курсор.
И Refresh выполняется в контексте либо читающей, либо пишущей транзакции датасета (см. свойство RefreshTransaction).

Чтобы перечитать все данные датасета, следует выполнять FullRefresh. Это примерно то же самое, что "открыть/закрыть", но с автоматическим запоминанием текущей записи и возвратом на нее.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430267
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,


Спасибо, попробую
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430286
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

На замечания Мимопроходящего спокойнее реагируй. Он по-дружески.
Здесь вообще такая атмосфера, хотя время от времени всё же модераторы кондиционируют.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430294
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,
Спасибо. Я в целом спокойно реагирую.
Но ОЧЕНЬ не люблю когда люди ругаются, да еще и без причины.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvа зачем читающей транзакции быть snapshot?
Э-э-э... Для целостности получаемых данных?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430328
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,
Спасибо. FullRefresh помог.
Пока на этом остановлюсь и буду дальше разбираться как правильно.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430345
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushПока на этом остановлюсь и буду дальше разбираться как правильно.

Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос,
а потом рефрешить датасет для обновления грида - это неправильно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430353
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

видимо, или нет pFIBUpdateSQL, либо в pFIBDataSet не прописан RefreshSQL. Вообще про все это можно было давно прочитать тут

Работа с транзакциями и их использование в FIBPlus. Часть 1
http://devrace.com/ru/fibplus/articles/2165.php
FIBPlus: Особенности механизма master-detail при работе с InterBase и Firebird. Часть 3. Режим AutoCommit. Работа в контексте двух транзакций
http://devrace.com/ru/fibplus/articles/1168.php

и т.д.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430357
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovakrushПока на этом остановлюсь и буду дальше разбираться как правильно.

Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос,
а потом рефрешить датасет для обновления грида - это неправильно.

Влт теперь все стало на свои места. Спасибо. Понимал что что-то не так.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430643
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочется начинать новую тему т.к. частично вопрос уже тут обсуждаем.
Почему я смотрю Датасетом, а в ставку делаю отдельным запросом.
У меня на просмотр через один Датасет есть 2 запроса.
Разница только в том есть "дата решения вопроса" или нет.


Запрос который отображает ВСЕ нерешенные вопросы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT 
    ZAU.DATA_ROZGL, 
    ZAU.DATA_MAIL,
    ZAU.DATA_CORRECT, 
    lpad(trim(cast(ZAU.ID_OBLAST as char(5))),2,0) || lpad(trim(cast(ZAU.ID_RAJON as char(5))),2,0) || ' ' || RJ.NAME as rajon,
    tip.name as tip,
    prg.name as progs,
    ZAU.PRIMER, 
    ZAU.ZMIST,
    ZAU.RESULTS 
FROM 
    ZAUVAG ZAU, 
    rajon rj, 
    oblast obl, 
    progs prg, 
    tip_zauvag tip 
WHERE 
    (zau.id_oblast=obl.id)and
    (zau.id_rajon=rj.id)and
    (zau.id_prog=prg.id)and
    (zau.tip=tip.id)and
    (rj.id_obl=obl.id)and
    (zau.DATA_CORRECT is null) 
order by zau.data_rozgl DESC, rajon



Запрос который отображает все обращения
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT 
    ZAU.DATA_ROZGL, 
    ZAU.DATA_MAIL,
    ZAU.DATA_CORRECT, 
    lpad(trim(cast(ZAU.ID_OBLAST as char(5))),2,0) || lpad(trim(cast(ZAU.ID_RAJON as char(5))),2,0) || ' ' || RJ.NAME as rajon,
    tip.name as tip,
    prg.name as progs,
    ZAU.PRIMER, 
    ZAU.ZMIST,
    ZAU.RESULTS 
FROM 
    ZAUVAG ZAU, 
    rajon rj, 
    oblast obl, 
    progs prg, 
    tip_zauvag tip 
WHERE 
    (zau.id_oblast=obl.id)and
    (zau.id_rajon=rj.id)and
    (zau.id_prog=prg.id)and
    (zau.tip=tip.id)and
    (rj.id_obl=obl.id)and
    (zau.DATA_CORRECT is null) 
order by zau.data_rozgl DESC, rajon





Разница в запросах только в наличии вот этой проверки
Код: sql
1.
(zau.DATA_CORRECT is null)



Я понял что реализация была, мягко говоря, не очень т.к. в таком случае я наступаю на грабли "невидимости" внесенных изменений т.к. все изменения вносятся в другой транзакции, старшей по номеру от моей читающей.

Подскажите как правильно поступить в данной ситуации. Может можно использовать один запрос, который отображает все записи, а фильтром задавать условие отсутствия даты?
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430651
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, обойдись одним датасетом
Код: sql
1.
WHERE NOT(Cast(:solved_date AS DATE) IS NOT NULL) AND zau.DATA_CORRECT != :solved_date)
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430689
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после AND лишняя закрывающая скобка
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430695
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush, сори, это 20353294 решение для пропущенных параметров и для твоего случая не годится (привел ошибочно, проигнорировав эксплейн).

Ничто не мешает тебе менять в датасете запрос SELECT перед FullRefresh, в зависимости от выбранного пользователем варианта или же иметь два разных датасета, один из которых будет одномоментно неактивен.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430732
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,
Все вопрос решил.
Сделал общий запрос на вывод всех записей: решенных и нерешенных
А если нужно только нерешенные - фильтр data_correct is null
Проверил - работает.

Спасибо всем кто откликнулся
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430751
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush в таком случае я наступаю на грабли "невидимости" внесенных изменений т.к. все изменения вносятся в другой транзакции, старшей по номеру от моей читающей.
нет. версионность и транзакции ты так и не понял, читай
http://www.ibase.ru/mga/
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430760
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,
Спасибо. Еще раз перечитаю.
Если не пойму - создам тему "Вопросы по транзакциям" для уточнения/понимания/разъяснений
...
Рейтинг: 0 / 0
Получить значение генератора
    #39430836
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

очень рекомендую книжку "Мир Interbase".

К сожалению, в бумажном виде ее уже не купить, поэтом даю сылку на скачивание: http://maintracker.org/forum/viewtopic.php?t=3768062

Там есть раздел, буквально разжевывающий основы работы с FIB+.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431023
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

Лучше Борри - мне ее творение как-то больше приглянулось.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431058
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovakrushПока на этом остановлюсь и буду дальше разбираться как правильно.

Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос,
а потом рефрешить датасет для обновления грида - это неправильно.

Решил переделать вставку записи через датасет которым смотрю.
добавил insertsql:
Код: sql
1.
2.
INSERT INTO ZAUVAG(ID, DATA_ROZGL, DATA_MAIL, DATA_CORRECT, ID_OBLAST, ID_RAJON, TIP, ID_PROG, ZMIST, RESULTS, PRIMER)
VALUES(:ID, :DATA_ROZGL, :DATA_MAIL, :DATA_CORRECT, :ID_OBLAST, :ID_RAJON, :TIP, :ID_PROG, :ZMIST, :RESULTS, :PRIMER)



Перед вставкой получаю необходимые мне данные:
Код: sql
1.
2.
3.
4.
5.
  Obl:=DM.fbTLoadObl.Lookup('name',CBOblast.Text,'id');
  Rj:=DM.fbTLoadRajonInObl.Lookup('name',CBRajon.Text,'id');
  Tip:=DM.fbTLoadTipZauvag.Lookup('name',CBTipZv.Text,'id');
  Prg:=DM.fbTLoadProgs.Lookup('name',CBProgs.Text,'id');
  id_zauvag:=DM.DBZauvag.Gen_Id('GEN_ZAUVAG_ID',1);



Потом делаю вставку новой записи:
Код: sql
1.
DM.fbTZauvag.InsertRecord([id_zauvag,DTPDataRozgl.Date, DTPDataMail.Date, null, Obl, Rj, Tip, Prg, MZmist.Text,MResult.Text,'']);



Делфи ругается:
'DM.fbTZauvag.InsertQuery:
The insert failed because a column definition includes validation constraints.Validation error for column "ZAUVAG"."ID_RAJON", value "*** null ***".
'.

Проверял трейсом, переменная Rj не пустая, там число 12.
DDL Таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE ZAUVAG (
    ID            BIGINT NOT NULL,
    DATA_ROZGL    DATE NOT NULL,
    DATA_MAIL     DATE,
    DATA_CORRECT  DATE,
    ID_OBLAST     INTEGER NOT NULL,
    ID_RAJON      INTEGER NOT NULL,
    TIP           SMALLINT,
    ID_PROG       INTEGER,
    ZMIST         VARCHAR(2500),
    RESULTS       VARCHAR(1000),
    PRIMER        VARCHAR(20)
);

ALTER TABLE ZAUVAG ADD CONSTRAINT PK_ZAUVAG PRIMARY KEY (ID);

ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_OBL FOREIGN KEY (ID_OBLAST) REFERENCES OBLAST (ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_PRG FOREIGN KEY (ID_PROG) REFERENCES PROGS (ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_RAJ FOREIGN KEY (ID_OBLAST, ID_RAJON) REFERENCES RAJON (ID_OBL, ID) ON DELETE SET NULL;
ALTER TABLE ZAUVAG ADD CONSTRAINT FK_ZAUVAG_TIP FOREIGN KEY (TIP) REFERENCES TIP_ZAUVAG (ID) ON DELETE SET NULL;

CREATE DESCENDING INDEX IDX_ZAUVAG_DATE_ROZGL ON ZAUVAG (DATA_ROZGL);



Что делаю не так?
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431092
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Избавился от всех внешних ключей. Ошибка осталась :(
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431118
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterчччД,

Лучше Борри - мне ее творение как-то больше приглянулось.

Мне творчество Чака Берри больше нравится. Хотя он, как и Х.Борри, про fib+ не писал.
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431120
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Чччд!
You wrote on 31 марта 2017 г. 18:43:50:

Чччд> Мне творчество Чака Берри больше нравится.он умер
а цой жив
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431161
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда уж Чак Норрис. Он тоже жив.

P.S. А чего это вы оффтопить решили?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить значение генератора
    #39431863
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Это не оффтоп, а советы почитать что-то лучше предложенного, хотя и не содержащего нужной темы.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить значение генератора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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