Я думаю, что синтаксис утверждения правильный. Если я выполню запрос:
select CURRENT_DATE - DAY(CURRENT_DATE) DAYS from sysibm.sysdummy1;
Выполняется и возвращается правильно (28.02.2011, на сегодняшнюю дату 29 марта).
Хотя я не могу найти ничего, что явно говорит о том, что математические функции недопустимы в значениях по умолчанию, синтаксическая диаграмма db2 CREATE TABLE выглядит так по умолчанию, а функции не перечислены:
default-values
|--+-constant-------------------------------------------+-------|
+-datetime-special-register--------------------------+
+-user-special-register------------------------------+
+-CURRENT SCHEMA-------------------------------------+
+-NULL-----------------------------------------------+
'-cast-function--(--+-constant------------------+--)-'
+-datetime-special-register-+
+-user-special-register-----+
'-CURRENT SCHEMA------------'
Я также попробовал следующий тест:
create table test (
test_column integer with default 1
);
create table test2 (
test_column integer with default (2 - 1)
);
тест создан, test2 не был.
Я думаю, что вы можете достичь желаемого с помощью триггера, который срабатывает после вставки.