powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не считывается новая строка в таблице сразу после ее записи
8 сообщений из 8, страница 1 из 1
Не считывается новая строка в таблице сразу после ее записи
    #40112236
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сохранить в таблице строку с количеством мест отгрузки, и сразу же прочитать ее, чтобы скопировать в таблицу остатков.
В дельфи делаю запрос с Save, затем сразу же с Open в этой же таблице, чтобы посчитать остатки, и перезаписываю результат в таблицу остатков. Так вот, при этом последняя записанная строка не учитывается в вычислении.
Если же делаю пошаговую трассировку, то строка считается.
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112243
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точку останова в программе ставишь, вычисляет правильно, а запускаешь программу Run, строка не подсчитывается. Может быть из-за того, что запросы без транзакций?
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112255
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad,

Это в разных соединениях (сессиях) или в одном?
Приведите код.
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112270
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,
Во-первых, вам на форум по Дельфе (сразу готовьте свой код для демонстрации, включая "запрос с Save"). Во-вторых, проблема изложена так сумбурно, что понятно чуть более чем ничего.
Вы таблицу остатков заново читаете? Возможно, у вас датасет просто не обновляется после вставки туда новой записи.
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112283
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99
svnvlad,
Во-первых, вам на форум по Дельфе (сразу готовьте свой код для демонстрации, включая "запрос с Save"). Во-вторых, проблема изложена так сумбурно, что понятно чуть более чем ничего.
Вы таблицу остатков заново читаете? Возможно, у вас датасет просто не обновляется после вставки туда новой записи.

Я обнаружил проблему: при сохранении времени DATETIME я сохраняю одно время '2021-11-16 13:59:48', а в базе оказывается на 1 секунду больше '2021-11-16 13:59:49'. Потом в запросе читаю эту записанную строку, ориентируясь по времени: WHERE time_accepted = '2021-11-16 13:59:48', и соответственно, строка не попадает в выборку. А по какому такому праву он сохраняет другое время?
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112294
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot svnvlad#22396522]
Gluck99
Я обнаружил проблему: при сохранении времени DATETIME я сохраняю одно время '2021-11-16 13:59:48', а в базе оказывается на 1 секунду больше '2021-11-16 13:59:49'. Потом в запросе читаю эту записанную строку, ориентируясь по времени: WHERE time_accepted = '2021-11-16 13:59:48', и соответственно, строка не попадает в выборку. А по какому такому праву он сохраняет другое время?

Потому что не надо в запрос пихать время на клиенте (компьютере пользователя), которое может быть, во-первых, какое угодно, а во-вторых, клиенты могут быть в разных часовых поясах, что добавит вам головной боли.
В базу надо писать время на сервере. Тут два варианта. Либо а) пишите в запросе на вставку записей NOW() вместо значения даты-времени поля time_accepted, либо б) для поля time_accepted устанавливаете значение по умолчанию в CURRENT_TIMESTAMP, таким образом в момент создания записи у вас всегда будет актуальное время.
И ещё. А с какой целью вы делаете выборку последней записи по времени? Время у вас вместо уникального ключа, что ли? А если кто-нибудь ещё в это же время вставит запись, секунда в секунду? Используйте ключи.
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112300
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Gluck99#22396539]
svnvlad
пропущено...

Потому что не надо в запрос пихать время на клиенте (компьютере пользователя), которое может быть, во-первых, какое угодно, а во-вторых, клиенты могут быть в разных часовых поясах, что добавит вам головной боли.
В базу надо писать время на сервере. Тут два варианта. Либо а) пишите в запросе на вставку записей NOW() вместо значения даты-времени поля time_accepted, либо б) для поля time_accepted устанавливаете значение по умолчанию в CURRENT_TIMESTAMP, таким образом в момент создания записи у вас всегда будет актуальное время.
И ещё. А с какой целью вы делаете выборку последней записи по времени? Время у вас вместо уникального ключа, что ли? А если кто-нибудь ещё в это же время вставит запись, секунда в секунду? Используйте ключи.

Там нужно записать указанное время, оно не обязательно должно быть Now().
Каждая строка имеет свое время записи, и потом в хронометраж записываем во сколько времени было сколько груза на складе (таймлайн). После записи отгрузки как раз вот вычисляю последнее значение количества груза для таймлайна, считывая последнюю запись.
...
Рейтинг: 0 / 0
Не считывается новая строка в таблице сразу после ее записи
    #40112309
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99,
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не считывается новая строка в таблице сразу после ее записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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