Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / current_timestamp / 6 сообщений из 6, страница 1 из 1
17.01.2007, 16:47
    #34262366
akimovp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
Уважаемые.

Подскажите плиз как такое может быть.

Две транзакции
-- в первой увеличиваю значение поля t1.balance где t1.id=1 на значение допустим 5.
Затем присваиваю в другой таблице полю значение t2.dt=current_timestamp, t2.leftBalance=t1.balance где t2.id=2.
-- вторая транзакция ждет пока снимется блокировка с t2.balance где t1.id=1 и тоже увеличивает его на 5 и затем присваиваем полю значение t2.dt=current_timestamp,t2.leftBalance=t1.balance где t2.id=3.

в результате получаем
t2.balance где t2.id=2 < t2.balance где t2.id=3
а
t2.dt где t2.id=2 > t2.dt где t2.id=3

то есть current_timestamp вызванная позднее вернула меньший результат чем первый вызов current_timestamp.
...
Рейтинг: 0 / 0
17.01.2007, 17:24
    #34262507
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
Kak to u Vas nemnogo putano vse napisano.

No delo v tom, chto current_timestamp vsegda ukazyvaet na nachalo transactsii i ne meniatsia vnutri nee. Tak chto esli u vas transactsia dlitsia nedeliu, to current_timestamp v kontse transactsii budet imet' to je znachenie chto v ee nachale -- tak trebuet SQL standart.
...
Рейтинг: 0 / 0
17.01.2007, 18:27
    #34262750
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
А если вы хотите время именно текущее("моментальное") время, а не время начала транзакции, используйте now()
...
Рейтинг: 0 / 0
17.01.2007, 18:33
    #34262779
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
JelisА если вы хотите время именно текущее("моментальное") время, а не время начала транзакции, используйте now()
Vy nepravy http://www.postgresql.org/docs/8.2/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
Iz doki:

now() is a traditional PostgreSQL equivalent to CURRENT_TIMESTAMP. transaction_timestamp() is likewise equivalent to CURRENT_TIMESTAMP, but is named to clearly reflect what it returns. statement_timestamp() returns the start time of the current statement (more specifically, the time of receipt of the latest command message from the client). statement_timestamp() and transaction_timestamp() return the same value during the first command of a transaction, but may differ during subsequent commands. clock_timestamp() returns the actual current time, and therefore its value changes even within a single SQL command. timeofday() is a historical PostgreSQL function. Like clock_timestamp(), it returns the actual current time, but as a formatted text string rather than a timestamp with time zone value.


Код: plaintext
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.
wsdb=# begin;
BEGIN
wsdb=# select now();
              now              
-------------------------------
  2007 - 01 - 17   15 : 32 : 56 . 468852 + 00 
( 1  row)

wsdb=# select now();
              now              
-------------------------------
  2007 - 01 - 17   15 : 32 : 56 . 468852 + 00 
( 1  row)

wsdb=# select statement_timestamp();
      statement_timestamp      
-------------------------------
  2007 - 01 - 17   15 : 33 : 02 . 754362 + 00 
( 1  row)

wsdb=# select statement_timestamp();
      statement_timestamp      
-------------------------------
  2007 - 01 - 17   15 : 33 : 03 . 807464 + 00 
( 1  row)
...
Рейтинг: 0 / 0
17.01.2007, 18:54
    #34262855
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
Упс, извините, погорячился :-)
Конечно же timeofday() а не now()!
А transaction_ и clock_ появились только в 8.2.
...
Рейтинг: 0 / 0
17.01.2007, 19:49
    #34262955
akimovp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
current_timestamp
JelisУпс, извините, погорячился :-)
Конечно же timeofday() а не now()!
А transaction_ и clock_ появились только в 8.2.
Спасибо, разъяснили чайнику.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / current_timestamp / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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