|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Добрый день всем. Есть 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.
Таблица присланных примеров/файлов Код: 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.
Вопрос: При вставке записей в таблицу 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; Настройки по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 10:38 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, 1. RETURNING 2. Следующее значение генератора можно получать до вставки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 10:40 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
kdv, Я хочу уточни правильно ли я понял. Мне в программе в переменную нужно получить значение генератора и при вставке в 2 таблицы использовать полученное значение. Я правильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:13 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, либо использовать insert ... returning, как сказал Денис, либо получить значение генератора в программе, и сразу вставить его в таблицу, и дальше это значение использовать как угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:15 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, какие компоненты или какой язык используется при доступе к базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:18 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, kdv имеет в виду, что если у тебя на клиенте формируется некий датасет, предположим, к таблице вида: Код: sql 1. 2. 3. 4. 5. 6. 7.
запросом Код: sql 1.
, то запрос с клиента на вставку строки Код: sql 1.
поместит присвоенное триггером значение в поле "REC_ID" датасета. В FIBPlus такой финт работает, как в других компонентах доступа к ФБ - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:34 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Спасибо всем. Приходит просветление :) Использую ФИБы ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:42 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Уточнение: Вставку делаю через Query. Returning вернет мне значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:45 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, вернет, но в этом случае, не пытайся проверять на EOF, а сразу бери значение из поля и проверяй его на "не NULL". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 11:56 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
rdb_dev, Понял, спасибо, уже пробую ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 12:15 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
rdb_dev, Подскажите. Не хочу плодить темы, но мой вопрос выплывает из уже обсужденного и решенного. Работаю с ФБ через ФИБы. Через Query произвел вставку. Все нормально. После вставки делаю датасету рефреш - записи не видно. А если датасет закрыть/открыть запись видна. Я понимаю что ФИБы на просмотр используют отдельную транзакцию. Суть вопроса - как правильно поступить чтобы увидеть записи. П.С. Не надо отправлять в ветку Делфи т.к. я знаю что многие из вас знают и ФИБы и Делфи. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:17 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, А вот и нет, "Дельфи тут никто не знает (с)" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:21 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
рефрешу нужен ПК, без ПК непонятно, что рефрешить. Как вариант решения проблемы: получать генератор заранее, присвоить его ИДу записи и потом решреш отработает штатно. транзакция пох, что отдельная, но таки да, пишущую перед рефрешем надо закоммитить (предпочитаю руками, лентяи по идее могут и авторефреш выставить, но это на любителя) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:21 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Так и делаю. Новая строка уже закомичена, но я ее не вижу пока не закрою приложение. Может нужно правильно ключи читающей транзакции выставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:25 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, прочитай что-нибудь про транзакции, и выставь "правильные ключи". Ты читающей транзакции влепил уровень изолированности snapshot, раз у тебя "записи видны после рестарта приложения". Классические грабли начинающего. Хотя в ФИБПлюс по умолчанию транзакции read_committed. http://www.ibase.ru/ibtrans/ http://www.ibase.ru/ibx/ (параметры транзакций в фибплюсе точно такие же). аналогично есть статья про транзакции в фибплюс еще у меня есть даже видео https://www. youtube.com/watch?v=n35L7gdw51Q p.s. предварительно надо хоть что-то читать, и гуглом пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:41 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, потому что твоя читающая транзакция не видит изменений пишущей. Надо подтверждать читающую транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:41 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
rdb_devНадо подтверждать читающую транзакцию. чего ахинею-то писать? readCommitted прекрасно видит чужие committed-изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:42 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
kdv, это если у него читающая транзакция read_committed. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:43 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
rdb_dev, а зачем читающей транзакции быть snapshot? тем более, что в фибплюсе, как я уже сказал, по умолчанию read committed? Я описал причину, ты написал "надо рестартовать". Очень полезный и дельный совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 14:47 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
чайникам не стОит юзать множественные транзакции. до того как они поймут "нахрена это надо". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:05 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
kdv, rdb_dev Не надо спорить. Зашел в настройки читающей транзакции. Там вообще ничего не было указано - пусто. Выбрал readcommited. Ситуацию попустило. Теперь вижу записи если закрыть/открыть датасет. Рефреш по прежнему не помогает. 2Мимопроходящий: Верну бумеранг назад. Не стоит вообще с людьми общаться и давать советы если не можете высказывать свое мнение без всяких там "нахрена" и подобных выражений. В соседнем топике, где обсуждали изменение ПДФ документа (признаю, Дмитрий, был не прав. Менять не имею права) вообще ругались, а согласно правил форума это запрещено. Модератор: Если считаете, что правила нарушены - жмите кнопку "Сообщить модератору" Указывать же, кто что может или нет - это называется "самовольная модерация", и она запрещена ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:23 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
2Модератор - Намек понят, учту. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:37 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush... Ситуацию попустило. Теперь вижу записи если закрыть/открыть датасет. Рефреш по прежнему не помогает. ... Ну что за ерунда. Метод Refresh выполняется только для текущей записи. То есть, на той, на которой стоит курсор. И Refresh выполняется в контексте либо читающей, либо пишущей транзакции датасета (см. свойство RefreshTransaction). Чтобы перечитать все данные датасета, следует выполнять FullRefresh. Это примерно то же самое, что "открыть/закрыть", но с автоматическим запоминанием текущей записи и возвратом на нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:39 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
чччД, Спасибо, попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:42 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, На замечания Мимопроходящего спокойнее реагируй. Он по-дружески. Здесь вообще такая атмосфера, хотя время от времени всё же модераторы кондиционируют. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 15:57 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
WildSery, Спасибо. Я в целом спокойно реагирую. Но ОЧЕНЬ не люблю когда люди ругаются, да еще и без причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 16:05 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
kdvа зачем читающей транзакции быть snapshot? Э-э-э... Для целостности получаемых данных?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 16:09 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
чччД, Спасибо. FullRefresh помог. Пока на этом остановлюсь и буду дальше разбираться как правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 16:46 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrushПока на этом остановлюсь и буду дальше разбираться как правильно. Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос, а потом рефрешить датасет для обновления грида - это неправильно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 17:03 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
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 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 17:12 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovakrushПока на этом остановлюсь и буду дальше разбираться как правильно. Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос, а потом рефрешить датасет для обновления грида - это неправильно. Влт теперь все стало на свои места. Спасибо. Понимал что что-то не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2017, 17:22 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Не хочется начинать новую тему т.к. частично вопрос уже тут обсуждаем. Почему я смотрю Датасетом, а в ставку делаю отдельным запросом. У меня на просмотр через один Датасет есть 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.
Запрос который отображает все обращения Код: 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.
Разница в запросах только в наличии вот этой проверки Код: sql 1.
Я понял что реализация была, мягко говоря, не очень т.к. в таком случае я наступаю на грабли "невидимости" внесенных изменений т.к. все изменения вносятся в другой транзакции, старшей по номеру от моей читающей. Подскажите как правильно поступить в данной ситуации. Может можно использовать один запрос, который отображает все записи, а фильтром задавать условие отсутствия даты? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 09:33 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, обойдись одним датасетом Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 09:45 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
после AND лишняя закрывающая скобка ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 10:22 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, сори, это 20353294 решение для пропущенных параметров и для твоего случая не годится (привел ошибочно, проигнорировав эксплейн). Ничто не мешает тебе менять в датасете запрос SELECT перед FullRefresh, в зависимости от выбранного пользователем варианта или же иметь два разных датасета, один из которых будет одномоментно неактивен. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 10:31 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
rdb_dev, Все вопрос решил. Сделал общий запрос на вывод всех записей: решенных и нерешенных А если нужно только нерешенные - фильтр data_correct is null Проверил - работает. Спасибо всем кто откликнулся ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 11:17 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush в таком случае я наступаю на грабли "невидимости" внесенных изменений т.к. все изменения вносятся в другой транзакции, старшей по номеру от моей читающей. нет. версионность и транзакции ты так и не понял, читай http://www.ibase.ru/mga/ ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 11:38 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
kdv, Спасибо. Еще раз перечитаю. Если не пойму - создам тему "Вопросы по транзакциям" для уточнения/понимания/разъяснений ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 11:47 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
akrush, очень рекомендую книжку "Мир Interbase". К сожалению, в бумажном виде ее уже не купить, поэтом даю сылку на скачивание: http://maintracker.org/forum/viewtopic.php?t=3768062 Там есть раздел, буквально разжевывающий основы работы с FIB+. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 13:04 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
чччД, Лучше Борри - мне ее творение как-то больше приглянулось. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 16:16 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovakrushПока на этом остановлюсь и буду дальше разбираться как правильно. Раз уж будешь разбираться, то хочу тебя огорчить: добавлять запись через отдельный запрос, а потом рефрешить датасет для обновления грида - это неправильно. Решил переделать вставку записи через датасет которым смотрю. добавил insertsql: Код: sql 1. 2.
Перед вставкой получаю необходимые мне данные: Код: sql 1. 2. 3. 4. 5.
Потом делаю вставку новой записи: Код: sql 1.
Делфи ругается: '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.
Что делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 16:47 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Избавился от всех внешних ключей. Ошибка осталась :( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 17:46 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
DarkMasterчччД, Лучше Борри - мне ее творение как-то больше приглянулось. Мне творчество Чака Берри больше нравится. Хотя он, как и Х.Борри, про fib+ не писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 18:41 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Hello, Чччд! You wrote on 31 марта 2017 г. 18:43:50: Чччд> Мне творчество Чака Берри больше нравится.он умер а цой жив Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 18:44 |
|
Получить значение генератора
|
|||
---|---|---|---|
#18+
Тогда уж Чак Норрис. Он тоже жив. P.S. А чего это вы оффтопить решили? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2017, 20:23 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561646]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 399ms |
0 / 0 |