아래와 같이 테이블이 구성되어있고,
| A | B |
| 남자 | |
| 여자 | |
| 남자 |
A필드의 값이 남자일때 B필드 값이 1,
A필드의 값이 여자일때 B필드 값이 2
update 테이블 set '1'~~ 쿼리문이 아닌
이런식으로 자동으로 업데이트 되는 기능이 있는지 알고 싶습니다.
2번째 데이터 여자가 남자로 바뀐다면, B값도 자동으로 1로 바뀌구요.
| A | B |
| 남자 | 1 |
| 여자 | 2 |
| 남자 | 1 |
1. 가상 컬럼(Virtual Column) 을 이용하는 방법
2. 실제 컬럼에 트리거(Trigger)를 이용해 관리하는 방법
3, B 컬럼이 추가된 VIEW 를 이용하도록 하는 방법
마농님께서 말씀하신 가상컬럼을 테스트해봤습니다~ 오라클 11g부터 지원된다고 하네요.
SQL > CREATE TABLE t1 (c1 VARCHAR(20),
c4 GENERATED ALWAYS AS
(CASE WHEN c1 = '남자' THEN 1 ELSE 2 END));
Table created.
SQL> insert into t1 (c1) values ('남자');
1 row created.
SQL> select * from t1;
C1 C4
-------------------- ----------
남자 1
SQL>
SQL> update t1 set c1='여자';
1 row updated.
SQL> select * from t1;
C1 C4
-------------------- ----------
여자 2
두분 모두 감사드립니다!