테이블의 한 필드가 업데이트되고 다른 필드가 해당 필드의 데이터에 종속되면 어떻게됩니까?테이블 필드가 업데이트 됨
나는 first, middle, last, full_name 필드를 가지고 있습니다. "마지막, 처음, 중간"데이터에 대해 Full_name 열이 한 번 삽입됩니다.
중간 이름을 삭제하면 어떻게 중간 이름을 제거하기 위해 full_name 필드를 업데이트 할 수 있습니까?
감사합니다. 도서 추천을 환영합니다.
테이블의 한 필드가 업데이트되고 다른 필드가 해당 필드의 데이터에 종속되면 어떻게됩니까?테이블 필드가 업데이트 됨
나는 first, middle, last, full_name 필드를 가지고 있습니다. "마지막, 처음, 중간"데이터에 대해 Full_name 열이 한 번 삽입됩니다.
중간 이름을 삭제하면 어떻게 중간 이름을 제거하기 위해 full_name 필드를 업데이트 할 수 있습니까?
감사합니다. 도서 추천을 환영합니다.
여기에서 수행하려는 작업은 a trigger입니다.
작동을 시작하는 방법은 다음과 같습니다.
데이터베이스에 변경된 사항이 있으며 해당 상황에서 요청한 사항을 수행합니다. 버전 11.1
전, 오라클은 계산 열을 지원하지 않습니다,하지만 당신은 사용할 수있는 AFTER UPDATE TRIGGER
대신 : 그것은 다른의 데이터에 따라 테이블에 하나 개의 컬럼을 가지고 기본 정상화를 위반
CREATE OR REPLACE TRIGGER PERSON_MIDDLE_NAME_COMPUTE
AFTER UPDATE ON PERSON
FOR EACH ROW
BEGIN
SELECT (:NEW.LAST || ',' || :NEW.FIRST || NVL2(:NEW.MIDDLE, ',' || :NEW.MIDDLE, ''))
INTO :NEW.FULL_NAME
FROM DUAL;
END;
열. 트리거를 사용하여 데이터를 동기화 상태로 유지할 수는 있지만 일반적으로 다소 번거롭습니다. 일반적으로 훨씬 편리합니다.
full_name
열을 완전히 제거합니다. full_name
을 계산하고 전체 이름을 생성하거나 응용 프로그램에서 데이터를 쿼리하는 데 사용하는 뷰에 함수 호출을 추가 할 때 해당 함수를 응용 프로그램에서 호출하는 함수를 만듭니다. 전체 이름으로 검색해야하는 경우이 함수의 결과에 함수 기 반 색인을 작성할 수 있습니다.full_name
을 계산하는 테이블에 virtual column을 정의 할 수 있습니다.가상 열 접근 방식은
같은SQL> ed
Wrote file afiedt.buf
1 create table foo (
2 first_name varchar2(100),
3 last_name varchar2(100),
4 middle_name varchar2(100),
5 full_name varchar2(304) generated always as (last_name || ', ' ||
6 first_name ||
7 (case when middle_name is not null
8 then ', ' || middle_name
9 else null
10* end)) virtual)
SQL>/
Table created.
SQL> insert into foo(first_name, last_name, middle_name)
2 values('Justin', 'Cave', 'O.J.');
1 row created.
SQL> select full_name from foo;
FULL_NAME
--------------------------------------------------------------------------------
Cave, Justin, O.J.
+1, 오라클이 버전 11.1에서 계산 된 열을 구현한다는 사실을 알지 못했습니다. –
계산 열 = 가상 열 = 비 영구 열, 맞습니까? 영구 열을 원하면 어떻게 될까요? 나는 그것이 구원 받기를 원한다. –
@Reet - 가상 열을 선언하면 계산 된 값이 인덱스에 지속적으로 저장되는 가상 열을 인덱싱하지 않는 한 값은 데이터를 쿼리 할 때 계산됩니다. 함수 기 반 색인을 작성하면 그 값은 색인에 지속적으로 저장됩니다. 가상 열의 색인을 생성하지 않으면 영구적인지 여부를 신경 쓰는 것이 이상하게 보일 수 있습니다. 가상 열을 인덱싱하는 경우 값이 테이블이나 인덱스에 유지되는지 여부가 중요합니까? –
감사를 보일 것이다! 나는 그것을 지금 이해한다. –
@Reet : 그걸 작동시킬 수 있었습니까? –