MySQL에서 함수와 트리거를 사용자 정의하는 방법

王林
풀어 주다: 2023-06-01 12:13:31
앞으로
1506명이 탐색했습니다.

1. 저장 함수(커스텀 함수)

  • 커스텀 함수는 MySQL을 확장하는 방법이며, 사용법은 내장 함수와 동일합니다.

  • 함수 정의에 필요한 두 가지 조건: 매개변수와 반환 값. 함수는 모든 유형의 값을 반환할 수 있으며 이러한 유형의 매개변수를 받을 수도 있습니다.

함수 본문 정보:

  • 함수 본문은 합법적인 SQL 문으로 구성됩니다.

  • 함수 본문은 간단한 SELECT 또는 INSERT 문일 수 있습니다.

  • 함수 본문이 적합한 구조인 경우 BEGIN....AND 문을 사용하여 래핑합니다.

  • 복합 구조에는 선언, 루프, 제어 구조 등이 포함될 수 있습니다.

중요: 사용자 정의 함수는 전역 변수를 정의하는 것처럼 동일한 이름을 가질 수 없으며 변수 이름은 일관될 수 없습니다.

1.1 저장 함수 정의

문법 형식:

create function 函数名(参数列表)
returns type(返回值类型)
begin
    --SQL语句
end;
로그인 후 복사

요구 사항: 조건을 충족하는 총 레코드 수를 얻기 위한 저장 프로시저 함수 정의

구현:

delimiter $
create function fun(countryId int)
returns int 
begin
    # 定义一个存储总数据条数的变量
    declare cum int default 0;
    # 查询等于传递参数的全部的数据数,然后将其赋值给定义的变量
    select count(*) into cum from city where country_id = countryId;
    # 返回结果值。存储函数必须有返回值
    return cum;
end $

delimiter ;
로그인 후 복사

1.2 저장 함수

구문 형식:

select 函数名(参数列表);
로그인 후 복사

참고: 저장 프로시저를 호출할 때는 call 키워드를 사용하지만, 저장 함수를 호출할 때는 MySQL에서 일반 집계 함수를 호출하는 것처럼 직접 select를 사용하면 됩니다. .

select fun(1);
# 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可
로그인 후 복사

1.3 저장된 함수 삭제

구문 형식

drop [if exists] function fun;
로그인 후 복사

2.트리거

2.1 트리거 소개

  • 트리거는 테이블과 관련된 데이터베이스 개체로, 삽입/업데이트/삭제 이전 또는 이후를 참조합니다. , 트리거에 정의된 SQL 세트를 트리거하고 실행합니다. 이 트리거 기능은 애플리케이션이 데이터베이스 측에서 데이터 무결성, 로깅 및 데이터 확인을 보장하는 데 도움이 될 수 있습니다.

  • 트리거는 추가, 삭제, 수정 시에만 사용할 수 있고 쿼리할 때는 사용할 수 없습니다.

  • 트리거에서 OLD 및 NEW 별칭을 사용하여 다른 데이터베이스와 마찬가지로 레코드의 변경된 부분을 참조하세요. MySQL 트리거는 행 수준 트리거링만 지원하고 명령문 수준 트리거링은 지원하지 않습니다. Oracle은 행 수준 및 명령문 수준 트리거를 모두 지원합니다.

  • OLD 및 NEW는 행 레코드 변수라고도 합니다. 이 두 변수를 사용하여 연산할 데이터 테이블의 데이터를 얻을 수 있습니다.

MySQL에서 함수와 트리거를 사용자 정의하는 방법

2.2 트리거 생성

문법 형식:

create trigger(触发器) trigger_name(触发器名称)
before/after insert/update/delete
on tab_name(表名)
[for each row](行级触发器)
begin
    trigger_stmt;(触发器的逻辑)
end;
로그인 후 복사

요구 사항: 추가, 수정, 삭제를 포함하는 트리거를 통해 emp 테이블의 데이터 변경 로그 emp_logs를 기록합니다.

구현 이온 :

분석: 트리거는 한 가지 유형의 데이터 작업만 수행할 수 있으며 추가, 수정, 삭제 작업을 동시에 완료할 수 없습니다. 따라서 이 로깅 작업을 완료하려면 지금 여러 트리거를 정의해야 합니다.

MySQL은 행 수준 작업의 트리거이기 때문에 신규 및 기존 데이터 행 전체를 저장합니다.

삽입을 실행하는 트리거 만들기:

MySQL에서 함수와 트리거를 사용자 정의하는 방법

  • 삽입 모드에서 new 키워드를 사용하여 삽입할 데이터를 가져옵니다.

  • 테이블 실행 후 after, emp 실행 후 사용 추가되면 이 트리거가 실행되어 로그를 기록합니다.

  • 이 트리거가 실행될 때 두 가지 점에 관련됩니다.

    • 반드시 동작해야 하는 테이블은 on 이후에 선언되는 테이블인 emp 테이블입니다.

    • 반드시 수행해야 하는 삽입 작업입니다.

업데이트 실행을 위한 트리거 생성:

MySQL에서 함수와 트리거를 사용자 정의하는 방법

이때 이전 변수는 수정 전의 데이터를 저장하고 새 변수는 수정 후의 데이터를 저장합니다

실행 생성 삭제 트리거 :

MySQL에서 함수와 트리거를 사용자 정의하는 방법

이번에 기존 변수에 저장된 삭제할 데이터

테스트: 테스트는 반드시 해당 연산의 emp 테이블이어야 위에서 정의한 트리거가 실행됩니다.

MySQL에서 함수와 트리거를 사용자 정의하는 방법

2.3 트리거 삭제

구문 구조:

drop trigger [schema_name.](数据库名)trigger_name(触发器名);
로그인 후 복사

schema_name(데이터베이스 이름)을 지정하지 않으면 기본값은 현재 데이터베이스입니다.

2.4 트리거 보기

show Triggers 명령을 실행하면 트리거의 상태, 구문 및 기타 정보를 볼 수 있습니다.

문법 구조:

show triggers;
로그인 후 복사

위 내용은 MySQL에서 함수와 트리거를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!