#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 дней, поэтому, если срок аренды превысит, я могу обновить.