-
[MySQL] 저장 프로시저(Stored Procedure) & 저장 함수(Stored Function) & 트리거(Trigger)CSE/MySQL 2015. 6. 12. 16:28
저장 프로시저 폼
CREATE PROCEDURE 프로시저명()
BEGIN
SQL 문1
SQL 문2
END
저장 프로시저 생성
123456789DELIMITER //CREATE PROCEDURE pr1()BEGINselect * from sale;select * from employ;END//DELIMITER ;cs 저장 프로시저 호출
123CALL procedure_name;CALL pr1;cs 설정한 값 이상인 레코드만 표시하는 프로시저
1234567891011DELIMITER //CREATE PROCEDURE pr2(d INT)BEGINselect * from sale where sales >= d;END//DELIMITER ;CALL pr2(100);cs 프로시저 내용 표시
1SHOW CREATE PROCEDURE pr2;cs 프로시저 삭제
12DROP PROCEDURE pr1;DROP PROCEDURE pr2;cs 저장 함수 폼
CREATE FUNCTION 함수명(인수 자료형) RETURNS 반환값자료형
BEGIN
SQL 문..
RETURN 반환값.식
END
저장 함수로 표준 체중 계산
123456789DELIMITER //CREATE FUNCTION fWeight(height INT) RETURNS DOUBLEBEGINRETURN height * height * 22 / 10000;END//DELIMITER ;cs 1select fWeight(175);cs 레코드의 평균값 반환 저장 함수
123456CREATE FUNCTION fAverage() RETURNS DOUBLEBEGINDECLARE r DOUBLE;SELECT AVG(sales) INTO r FROM sale;RETURN r;ENDcs 1select fAverage();cs 저장 함수 삭제
1234DROP FUNCTION function_name;DROP FUNCTION fAverage;DROP FUNCTION fWeight;cs 트리거 폼
CREATE TRIGGER 트리거_이름 BEFORE(또는 AFTER) delete 등의 명령
ON 테이블_이름 FOR EACH ROW
BEGIN
변경 전(OLD.칼럼_이름) 또는 변경 후(NEW.칼럼_이름)을 이용한 처리
END
123456789DELIMITER //CREATE TRIGGER tr1 BEFORE DELETE ON employ FOR EACH ROWBEGININSERT INTO sale_copy VALUES(OLD.number, OLD.name, OLD.age);END//DELIMITER ;cs 트리거 확인
1show triggers;cs 트리거 삭제
12drop trigger tr1;cs 'CSE > MySQL' 카테고리의 다른 글
[MySQL] 뷰(View) (0) 2015.06.12 [MySQL] UNION, JOIN, SUB QUERY (0) 2015.06.12 [MySQL] 수정(Update) & 삭제(Delete) (0) 2015.06.12 [MySQL] 조회 (0) 2015.06.12 [MySQL] 테이블 변경, 색인, 기본키 (0) 2015.06.12 [MySQL] 데이터베이스 & 테이블 (0) 2015.06.12