728x90
목차
1. 저장 프로시저
2. 트리거

1. 저장 프로시저

저장 프로시저

SQL을 함수형태로 저장하고 사용하는 방법(Static SQL)

  • 저장 프로시저 정의

CREATE PROCEDURE 프로시저명(인자 인자형, …)

BEGIN 

SQL 문장들 

END

  • 저장 프로시저 호출

CALL 프로시저명;

  • 저장 프로시저 삭제

DROP PROCEDURE 프로시저명;

—> SQL을 묶어서 관리하기에 높은 가독성 제공

—> precompile의 특징을 가짐 (기존 SQL은 인터프리터 방식 : 한 줄씩 기계어로 변역) 빠른 수행 속도를 제공

—> 기존 SQL문을 Dynamic SQL라고 부르기도 한다.

DELEMITER //
CREATE PROCEDURE InsertLines()
BEGIN
insert into city values(10000, ‘Sample’, ‘KOR’, ’Test’, 100000);
insert into city values(20000, ’SampleTest’, ‘KOR’, ‘Test’, 2000000);
END
//
DELEMITER;
CALL InsertLines;

 

저장 함수

SQL을 함수 형태로 저장하고 사용하는 방법

  • 함수 정의

CREATE FUNCTION 함수명(인자 인자형, …) RETURNS 타입

BEGIN

SQL 문장들

END

  • 함수 호출

함수명(인자);

  • 함수 삭제

DROP FUNCTION 함수명;

—> 프로시저와의 차이점 : 리턴값이 있다.

DELEMITER //
CREATE FUNCTION CoutLines() RETURNS INTEGER
BEGIN
DECLARE LINE_COUNT INTEGER;
SELECT COUNT(*) INTO LINE_COUNT FROM BusinessCard;
RETURN LINE_COUNT;
END
//
DELEMITER;
SELECT CountLines() from BusinessCard;

 

2. 트리거

트리거

특정한 조건이 되면 자동으로 호출(콜백)되는 저장 프로시저

예) 레코드를 삭제되면 자동으로 참조무결성을 체크하는 트리거

  • 트리거 정의

CREATE TRIGGER 트리거명 BEFORE(또는 AFTER) CRUD ON 테이블명 FOR EACH ROW

BEGIN

변경 전(OLD.칼럼명) 또는 변경 후(NEW.칼럼명)을 이용한 처리

END

  • 저장 프로시저 삭제

DROP PROCEDURE 트리거명;

create table BusinessCard2(Name Varchar(255), Address Varchar(255), Telephone Varchar(255));
DELIMITER $
create trigger insertBusinessCard2 after insert on BusinessCard for each row
begine
insert into BusinessCard2 values (‘zzz’, ‘zzzz’, ‘000-0000’);
end$
DELIMITER;
insert into BusinessCard values (’Sam’, ‘Sindang-dong 456’, ‘321-4321’);

 

728x90

+ Recent posts