powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
7 сообщений из 7, страница 1 из 1
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38455778
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица
Код: plsql
1.
2.
3.
4.
CREATE TABLE LOGS (
    LOGDATE  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    USER_ID  INTEGER
);



Когда в нее пишу из автономной транзакции, то поле LOGDATE во всех записях равно старту родительской транзакции.
Скрипт для теста
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
EXECUTE BLOCK
AS
DECLARE VARIABLE USER_ID INTEGER;
BEGIN
     FOR SELECT ID FROM USERS ROWS 200 INTO USER_ID
      DO
      BEGIN
        IF (EXISTS(SELECT COUNT(*) FROM CARS)) THEN
        IN AUTONOMOUS TRANSACTION
          DO
            INSERT INTO LOGS(USER_ID)VALUES(:USER_ID);
      END
END

200 записей было добавлено в таблицу LOGS

------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 22s 157ms



Скрипт исполнялся 22с, а время в LOGDATE одинаковое. Почему так ?
Версия сервера WI-V6.3.1.26278 Firebird 2.5
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38455789
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
outman,

по определению. CURRENT_TIMESTAMP атомарно.
нужно точное время - cast( 'NOW' as timestamp)
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38455807
outman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor, Спасибо.
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38456782
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorпо определению. CURRENT_TIMESTAMP атомарно.
там транзакция запускается 200 раз
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38456792
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeтам транзакция запускается 200 раз
Пофиг, оно атомарно не на транзакцию, а на top-level statement, каковым в стартовом посте
является EB.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38456872
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNickDeeтам транзакция запускается 200 разПофиг, оно атомарно не на транзакцию, а на top-level statement , каковым в стартовом посте является EB.Время, запрашиваемое через 'now', *меняется* внутри автономки. Или разжуй, плз, что такое "атомарное не на транзакцию".
sample
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set term ^;
execute block returns(dts timestamp) as
  declare i int;
begin
  dts=cast('now' as timestamp);
  suspend;
  in autonomous transaction do begin
    i=(select count(*) from rdb$types,rdb$types,rdb$types);
    dts=cast('now' as timestamp);
  end
  suspend;
end^
set term ;^

                      DTS
=========================
2013-11-07 19:18:03.8520
2013-11-07 19:18:24.3990
...
Рейтинг: 0 / 0
CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
    #38456883
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид*меняется* внутри автономки.
now везде неатомарно. А current_timestamp атомарно внутри блока blr.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / CURRENT_TIMESTAMP and AUTONOMOUS TRANSACTION
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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