서버단에 저장되는 SQL 쿼리들, 강력한 VIEW!
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
-- statements
END //
DELIMITER;
CALL procedure_name(arguments);
프로그래밍 언어의 함수처럼 인자를 넘기는 것이 가능하다
리턴되는 값을 레코드들의 집합이다
간단한 분기문과 루프를 통한 프로그램이 가능하다
디버깅이 힘들고 서버단의 부하를 증가시킨다는 단점이 있다
3가지 패러미터가 가능하다
사용 예
(IN argName varchar(255))
값을 하나 리턴해주는 함수 서버의 특정 데이터베이스 밑에 등록
DELIMITER //
CREATE FUNCTION function_name(parameters)
RETURNS
DETERMINISTIC --또는 NON DETERMINISTIC
BEGIN
-- statements
END //
SELECT a, function_name(argument)
FROM SOME_TABLE;
Procedure와 달리 결과의 집합이 아닌 하나의 값(Scala)를 반환한다
모든 함수의 인자는 IN 파라미터
CALL로 호출하는 procedure와 달리 SQL문 안에서도 사용할 수 있다
삽입/삭제/갱신 실행 전후에 특정 작업을 수행하게 함
CREATE TRIGGER 트리거이름
{BEFORE|AFTER} {INSERT|UPDATE|DELETE}
ON table_name FOR EACH ROW
-- 트리거 로직
;
CREATE TRIGGER before_update_sangmin_name_gender
BEFORE UPDATE ON sangmin_name_gender
FOR EACH ROW
INSERT INTO sangmin_name_gender_audit
SET name = OLD.name,
gender = OLD.gender,
modified = NOW();