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
'IT > SQL' 카테고리의 다른 글
[SQL] COUNT에 조건 넣기 (0) | 2022.12.16 |
---|---|
MySQL[20] - 대용량 데이터베이스 구축 기술 (0) | 2022.06.23 |
MySQL[18] - 트랜잭션 개념, 락(lock), 격리수준 (0) | 2022.06.14 |
MySQL[17] - Full Text Search, Bulk Insert (0) | 2022.06.14 |
[SQL] 프로시저 vs 함수 (0) | 2022.06.14 |