Трябва ли да имате has_unpaid_bill
колона в таблицата на първо място? Зависи от SYSDATE
. Изискването мирише на виртуална колона, но - не можете да използвате SYSDATE
там, тъй като не е детерминистична функция. Следователно, какво ще кажете за гледна точка вместо? Съхранявайте данните, от които се нуждаете, в таблицата, но отправете заявка към изгледа:
Таблица и няколко примерни записа:
SQL> create table test
2 (id number,
3 last_bill_paid_date date
4 );
Table created.
SQL> insert into test values (1, date '2020-11-09');
1 row created.
SQL> insert into test values (1, date '2020-11-02');
1 row created.
Преглед:
SQL> create or replace view v_test as
2 select id,
3 last_bill_paid_date,
4 case when trunc(sysdate) - last_bill_paid_date > 5 then 'Y'
5 else 'N'
6 end has_unpai_dbill
7 from test;
View created.
SQL>
SQL> select * from v_test;
ID LAST_BILL_ H
---------- ---------- -
1 09.11.2020 N
1 02.11.2020 Y
SQL>