|
Получить значение генератора
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=40&fpage=47&tid=1561646]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
118ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 236ms |
0 / 0 |