본문 바로가기

verdantjuly/Today I Learned

TIL 20240604

728x90

이번 주 목표

하루 1개 TIL 

오늘 목표

하루 1개 TIL 

오늘 한 것

하루 1개 TIL 

오늘 스케줄

하루 1개 TIL 

1. Trigger

데이터베이스에서 특별한 이벤트가 발생할 때마다 자동으로 호출되는 데이터베이스의 저장 프로시저

테이블에 행이 삽입되거나 특정 테이블 열이 업데이트될 때 트리거가 호출될 수 있습니다. 

모든 트리거에는 테이블이 연결되어 있습니다.

트리거는 저장 프로시저와 달리 직접 호출할 수 없기 때문에 특수 프로시저라고 합니다.

 

  1. 트리거는 수동으로 호출하거나 실행할 수 없습니다.
  2. 트리거가 매개변수를 수신할 가능성은 없습니다.
  3. 트리거 내에서는 트랜잭션을 커밋하거나 롤백할 수 없습니다.

트리거가 연결된 테이블 컬럼의 데이터 타입을 바꿀 때는 트리거를 먼저 DROP 해야 한다. 

 

출처 : https://www.geeksforgeeks.org/sql-trigger-student-database/

2. Trigger Function

DEFINE CITY DIMENSION TEXT
TRIGGER MAINTAIN TRIGGER_MAINTAIN_CITY
 
DEFINE TRIGGER_MAINTAIN_CITY PROGRAM BOOLEAN 
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
RETURN TRUE
END

 

출처 :
https://docs.oracle.com/cd/B13789_01/olap.101/b10339/x_trap003.htm
https://docs.oracle.com/cd/B13789_01/olap.101/b10339/x_trap002.htm#CEGHCAHC

 

Trigger Function 은 트리거 동작을 함수로 묶은 것이다. 

간편하게 묶어서 적용하고 해제할 수 있다. 

트리거가 다양한 테이블에 쓰여야 하는 경우 유지 보수에 좋다. 

현재 프로그램이 트리거 프로그램이라면 Trigger Function은 트리거 정보를 반환한다.
그렇지 않을 경우 트리거 함수는 가장 최근 실행된 트리거 프로그램 정보를 반환한다. 

PostgreSQL에서 트리거에서 실행되는 프로세스는 직접 작성하지 않고 트리거 함수로 준다.

 

3. VIEW

하나 또는 그 이상의 테이블에서 원하는 모든 데이터를 선택하여 그들을 사용자 정의 하여 나타낸 것. 

사용자 커스텀 가상 테이블.

 

 다른 테이블에 있는 데이터를 보여줄 뿐이며, 실제 테이블과 달리 데이터 자체를 포함하고 있는 것은 아니다. 

 

표준 SQL 규격으로는 SQL89에서 사용 가능해 졌다. SQL89에서는 뷰를 만들 수 있지만, DROP 문이 없기 때문에 삭제할 수 없었지만, SQL92에서는 CHECK OPTION, LOCAL, CASCADE 기능 확장이 이루어지고 있다. SQL99에서는 더욱 기능 강화되었으며, 특정 조건 하에서 뷰에서 기본 테이블의 데이터 업데이트가 가능하게 되었다.

CREATE VIEW 뷰이름 AS SELECT 구문;

 

출처 : https://ko.wikipedia.org/wiki/VIEW_(SQL)

 

VIEW가 연결된 테이블 컬럼의 데이터 타입을 바꿀 때는 VIEW를 먼저 DROP 해야 한다. 

 

 

 

 

 


정리 

트리거나 VIEW가 연결된 테이블 컬럼의 데이터 타입을 바꿀 때는 트리거나 VIEW를 먼저 DROP 해야 한다. 

PostgreSQL에서 트리거에서 실행되는 프로세스는 직접 작성하지 않고 트리거 함수로 준다.

KPT

Keep

열심히 하는 것

Problem

차분히 읽지 않는 것

Try

시간들여 읽고 이해하기

소감

내 성격이 많이 급하다는 것을 알았다.

구현에 급급했던 과거를 버리고 이해도를 높이자. 

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20240610  (2) 2024.06.10
TIL 20240606  (0) 2024.06.06
TIL 20240603  (0) 2024.06.03
TIL 20240512  (0) 2024.05.13
TIL 20240508  (0) 2024.05.08