Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как получить Timestamp? / 14 сообщений из 14, страница 1 из 1
25.04.2007, 15:21
    #34486782
sq_deep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Господа, есть ли в Информиксе дата и время модификации записи ?

Уверен, что есть.

Как мне его получить?
Все поиски тщетны. ROWID нашёл, а с timestamp-ом беда!

Только на вас осталась надежда...
...
Рейтинг: 0 / 0
25.04.2007, 15:37
    #34486848
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Из неопубликованного FAQ :)
Код: plaintext
1.
2.
3.
        --------------------------------------------------------------------------------------
        * Можно ли из системных таблиц узнать когда (точное время) последний раз производилось  
          обращение (выборка или обновление данных) в несистемных таблицах ?
        --------------------------------------------------------------------------------------
Нет. В системных таблицах такое время не хранится.
Для получения такой информации можно использовать информацию из аудита, или анализируя записи из логического журнала или добавляя соответствующие поля в пользовательские таблицы и заполняя их триггерами во время обращений.
...
Рейтинг: 0 / 0
25.04.2007, 15:43
    #34486874
sq_deep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
vasilis... Нет. В системных таблицах такое время не хранится... vasilis , вы убиваете мою последнюю надежду :(:(:(
...
Рейтинг: 0 / 0
25.04.2007, 17:54
    #34487462
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
vasilisНет. В системных таблицах такое время не хранится.
Вот уж где стал бы искать в ПОСЛЕДНЮЮ очередь :)
Это информацию стоило бы искать в структуре хранения tablespace (а точнее, собственно строки)...
...
Рейтинг: 0 / 0
26.04.2007, 11:42
    #34489081
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
АнатоЛой vasilisНет. В системных таблицах такое время не хранится.
Вот уж где стал бы искать в ПОСЛЕДНЮЮ очередь :)
Это информацию стоило бы искать в структуре хранения tablespace (а точнее, собственно строки)...
И где же там искать, если эта структура известна и таких данных там никогда не было ?
А главное, зачем эта информация нужна ? Просто представить, сколько дурной работы надо будет делать серверу, чтобы _по каждой записи_ изменять timestamp... Они даже на странице общий timestamp для проверки целостности и то сделали обычным инкрементируемым int-ом, а не настоящей временной отметкой.
А если вдруг, кому то надо для прикладных целей сохранять такую информацию, то в этом ему прекрасно помогут триггеры, заодно можно будет увидеть и затраты на эту работу при массовых инсертах-апдейтах.
...
Рейтинг: 0 / 0
26.04.2007, 18:27
    #34490889
sq_deep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Спасибо за информацию, господа.
...
Рейтинг: 0 / 0
26.04.2007, 19:08
    #34490978
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
vasilis АнатоЛой[quot vasilis]Нет. В системных таблицах такое время не хранится.
Вот уж где стал бы искать в ПОСЛЕДНЮЮ очередь :)
Эту информацию стоило бы искать в структуре хранения tablespace (а точнее, собственно строки)...
Может я не так выразился... Я хотел сказать, что если такая информация в IDS и есть - то IMHO логичнее было бы подтверждение этому искать не в системных таблицах, а в структуре записи таблицы... И если её там нет - таки вроде остаётся только три вышеупомянутых варианта:
- логи
- аудит
- прикладное решение.
Хотя, если бы время модификация и было в структуре записи, как его оттуда выцарапать - это ещё одна проблема... :)

vasilis
И где же там искать, если эта структура известна и таких данных там никогда не было ?

Кому структура известна - у тех вопросов нет. А кто-то может не догадываться, что такая информация (о структуре) в принципе доступна. Я, например, не на 100% был уверен, что её там точно нет...

vasilis
А главное, зачем эта информация нужна ?

Ну вот бывает полезна в прикладных приложениях :)) Что, никогда не попадали в такую ситуацию?!
Не верю... :)

vasilis
Просто представить, сколько дурной работы надо будет делать серверу, чтобы _по каждой записи_ изменять timestamp...

Ну не надо по каждой... Вот rowid не для каждой же таблице можно получить - и ничего, не умерли :) Была бы опция такая для таблицы "Хранить для данной таблицы дату/время последней модификации каждой записи" - думаю, использовали бы...

vasilis
Они даже на странице общий timestamp для проверки целостности и то сделали обычным инкрементируемым int-ом, а не настоящей временной отметкой.

Хм... Тема топика, конечно, была про TimeStamp, но непосредственно в сообщении автор спрашивал про "дату и время" (хоть и расплывчато :). Неужели время с точностью до СЕКУНД так накладно 1) в ядре получить и 2) в заголовке строки сохранить? Для гуру вопрос может показаться риторическим, типа "Конечно, накладно", но у меня таких знаний пока нет...

vasilis
А если вдруг, кому то надо для прикладных целей сохранять такую информацию, то в этом ему прекрасно помогут триггеры, заодно можно будет увидеть и затраты на эту работу при массовых инсертах-апдейтах.

Не уверен что настолько сравнимы по затратам ресурсов две такие реализации:
1) на триггерах
и
2) в ядре СУБД...
А особенно памятуя про особенности извлечения текущего времени в SPL IDS...
...
Рейтинг: 0 / 0
26.04.2007, 19:09
    #34490985
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Пардон за неправильное первое цитирование в предыдущем посте...
...
Рейтинг: 0 / 0
26.04.2007, 19:23
    #34491010
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
В 11 версии будет для каждой строки поддерживаться такой timestamp
...
Рейтинг: 0 / 0
26.04.2007, 20:17
    #34491088
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
nkulikovВ 11 версии будет для каждой строки поддерживаться такой timestamp
Нормально.
А чем (или как) эту информацию можно будет получить?
И где эта информация будет храниться?
...
Рейтинг: 0 / 0
26.04.2007, 20:59
    #34491130
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
АнатоЛой vasilisА главное, зачем эта информация нужна ?
Ну вот бывает полезна в прикладных приложениях :)) Что, никогда не попадали в такую ситуацию?! Не верю... :)
Бывает полезно. Но это же не значит, что внутри сервера должно быть все, что может быть полезно (а может и не быть полезно или востребованно). Есть известный афоризм - "Идеально - это не тогда, когда уже нечего добавить, а когда уже нечего отнять". Мне этот афоризм импонирует, а вот разработчикам О. - наверное, нет :))
АнатоЛой vasilis
Просто представить, сколько дурной работы надо будет делать серверу, чтобы _по каждой записи_ изменять timestamp...
Ну не надо по каждой... Вот rowid не для каждой же таблице можно получить - и ничего, не умерли :) Была бы опция такая для таблицы "Хранить для данной таблицы дату/время последней модификации каждой записи" - думаю, использовали бы...
Согласен, как опция, возможно и была бы неплохой - добавлялся бы скрытый или видимый столбец, в котором стандартным SQL можно было бы читать данные. Только что мешает добавить самому такой столбец и поставить default = current для инсертов ?
...
Рейтинг: 0 / 0
27.04.2007, 06:57
    #34491488
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Для нового уровня изволяции LAST COMMITED DB2/Informix будут поддерживать такой столбец сами автоматически. Более подробно я еще не разбирался.
...
Рейтинг: 0 / 0
27.04.2007, 08:43
    #34491574
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
nkulikovДля нового уровня изволяции LAST COMMITED DB2/Informix будут поддерживать такой столбец сами автоматически. Более подробно я еще не разбирался.Тогда это не будет реальными датой/временем.

Предположим время хранится с точностью до минуты.
Наша транзакция началась в 16:53, мы приходим за строкой в таблицу и видим время обновления 16:53 (на самом деле тут надо хранить не время обновления, но время начала обновившей ее транзакции (или запроса), но речь не об этом), и что делать? Брать эту строку или идти за ее предыдущим состоянием куда-то в сегменты отката?
Никакой точности никакого времени недостаточно для соблюдения ACID, необходим инкрементальный счетчик.
...
Рейтинг: 0 / 0
27.04.2007, 10:15
    #34491817
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить Timestamp?
Возможно. Надо изучать внимательнее. В одном из описаний видел про этот столбец.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как получить Timestamp? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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