Oracle: значение столбца по умолчанию как другой столбец из той же таблицы

#oracle11g #sql-update

Вопрос:

Я использую oracle 11g.

Я создал таблицу test_date

CREATE TABLE test_date (str_date DATE, rtn_date AS (str_date 90));

Я вставил значения str_date

 INSERT INTO test_date(str_date) VALUES(SYSDATE);
 

Теперь это выглядит так

 SQL> SELECT * FROM test_date;
STR_DATE  RTN_DATE
--------- ---------
08-MAY-21 06-AUG-21
 

Я хочу обновить значение rtn_date, но получаю ошибку типа,

 SQL> UPDATE test_date SET rtn_date='01-APR-2021';
 

ОШИБКА в строке 1: ORA-54017: Операция ОБНОВЛЕНИЯ запрещена для виртуальных
столбцов

Есть ли способ обновить значение, если rtn_date?

Спасибо!!

Комментарии:

1. Вы не можете обновить rtn_date столбец напрямую, как это, потому что это только виртуальный/вычисляемый столбец, основанный на str_date столбце.

2. @TimBiegeleisen Спасибо!! Есть ли для этого какая-то альтернатива?

3. Конечно; обновление STR_DATE и RNT_DATE отразят это изменение.

4. @Littlefoot Спасибо!! Я понял твою точку зрения. STR_DATE-это дата начала аренды, а RTN_DATE-дата возврата. Поэтому я хотел сохранить срок аренды на 90 дней, поэтому, если срок аренды превысит, я могу обновить.