HSQLDB и оптимистичная блокировка

В MySQL можно определить столбец таблицы, значение которого всегда обновляется менеджером базы данных:

CREATE TABLE widgets (
    widget_id         INT NOT NULL,
    widget_version    TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

Выше каждый раз, когда создается новый объект [widgets], текущая метка времени используется для его столбца version. И каждый раз, когда происходит запись/обновление этого объекта, система будет обновлять version с (снова) текущей меткой времени.

Есть ли способ сделать это в HSQLDB 2.3.x? Мой Google Fu и просмотр документации по HSQLDB не помогли.


person IAmYourFaja    schedule 07.12.2014    source источник
comment
HSQLDB имеет исчерпывающую, хотя и плотную документацию, которая включает в себя то, что может быть помещено в фразу DEFAULT. Если вам нужна ссылка на него, вы можете найти его в Интернете по адресу hsqldb.org/. doc/2.0/guide/index.html   -  person scottb    schedule 07.12.2014
comment
Почему минус без объяснения причин? Это обман? Если это так, пожалуйста, дайте ссылку на вопрос, который является обманом! В противном случае это SSCCE, показывает усилия/исследования и предоставляет всю справочную информацию, необходимую для ответа на вопрос!   -  person IAmYourFaja    schedule 11.12.2014


Ответы (2)


HSQLDB не поддерживает предложение обновления в выражении DEFAULT.

HSQLDB поддерживает триггеры для этой цели.

CREATE TRIGGER t BEFORE UPDATE ON wiget_version
REFERENCING NEW AS newrow FOR EACH ROW
BEGIN ATOMIC
   SET newrow.widget_version = LOCALTIMESTAMP;
END
person fredt    schedule 17.02.2015

Я только что разговаривал с Митчем Коннором, основателем и основным сопровождающим HSQLDB, в IRC, и, по-видимому, HSQLDB никогда не создавался с целью обработки оптимистичных блокировок.

Митч порекомендовал мне вместо этого попробовать H2.

person IAmYourFaja    schedule 15.12.2014
comment
Я сопровождаю HSQLDB и никогда не слышал о Митче Конноре! HSQLDB поддерживает оптимистическую блокировку при использовании в режиме транзакций MVCC. - person fredt; 18.02.2015