커스텀 함수는 MySQL을 확장하는 방법이며, 사용법은 내장 함수와 동일합니다.
함수 정의에 필요한 두 가지 조건: 매개변수와 반환 값. 함수는 모든 유형의 값을 반환할 수 있으며 이러한 유형의 매개변수를 받을 수도 있습니다.
함수 본문 정보:
함수 본문은 합법적인 SQL 문으로 구성됩니다.
함수 본문은 간단한 SELECT 또는 INSERT 문일 수 있습니다.
함수 본문이 적합한 구조인 경우 BEGIN....AND 문을 사용하여 래핑합니다.
복합 구조에는 선언, 루프, 제어 구조 등이 포함될 수 있습니다.
중요: 사용자 정의 함수는 전역 변수를 정의하는 것처럼 동일한 이름을 가질 수 없으며 변수 이름은 일관될 수 없습니다.
문법 형식:
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 ;
구문 형식:
select 函数名(参数列表);
참고: 저장 프로시저를 호출할 때는 call 키워드를 사용하지만, 저장 함수를 호출할 때는 MySQL에서 일반 집계 함수를 호출하는 것처럼 직접 select를 사용하면 됩니다. .
select fun(1); # 这里和存储过程一样,调用的时候需要加小括号和参数,但是在删除的时候指定函数名即可
구문 형식
drop [if exists] function fun;
트리거는 테이블과 관련된 데이터베이스 개체로, 삽입/업데이트/삭제 이전 또는 이후를 참조합니다. , 트리거에 정의된 SQL 세트를 트리거하고 실행합니다. 이 트리거 기능은 애플리케이션이 데이터베이스 측에서 데이터 무결성, 로깅 및 데이터 확인을 보장하는 데 도움이 될 수 있습니다.
트리거는 추가, 삭제, 수정 시에만 사용할 수 있고 쿼리할 때는 사용할 수 없습니다.
트리거에서 OLD 및 NEW 별칭을 사용하여 다른 데이터베이스와 마찬가지로 레코드의 변경된 부분을 참조하세요. MySQL 트리거는 행 수준 트리거링만 지원하고 명령문 수준 트리거링은 지원하지 않습니다. Oracle은 행 수준 및 명령문 수준 트리거를 모두 지원합니다.
OLD 및 NEW는 행 레코드 변수라고도 합니다. 이 두 변수를 사용하여 연산할 데이터 테이블의 데이터를 얻을 수 있습니다.
문법 형식:
create trigger(触发器) trigger_name(触发器名称) before/after insert/update/delete on tab_name(表名) [for each row](行级触发器) begin trigger_stmt;(触发器的逻辑) end;
요구 사항: 추가, 수정, 삭제를 포함하는 트리거를 통해 emp 테이블의 데이터 변경 로그 emp_logs를 기록합니다.
구현 이온 :
분석: 트리거는 한 가지 유형의 데이터 작업만 수행할 수 있으며 추가, 수정, 삭제 작업을 동시에 완료할 수 없습니다. 따라서 이 로깅 작업을 완료하려면 지금 여러 트리거를 정의해야 합니다.
MySQL은 행 수준 작업의 트리거이기 때문에 신규 및 기존 데이터 행 전체를 저장합니다.
삽입을 실행하는 트리거 만들기:
삽입 모드에서 new 키워드를 사용하여 삽입할 데이터를 가져옵니다.
테이블 실행 후 after, emp 실행 후 사용 추가되면 이 트리거가 실행되어 로그를 기록합니다.
이 트리거가 실행될 때 두 가지 점에 관련됩니다.
반드시 동작해야 하는 테이블은 on 이후에 선언되는 테이블인 emp 테이블입니다.
반드시 수행해야 하는 삽입 작업입니다.
업데이트 실행을 위한 트리거 생성:
이때 이전 변수는 수정 전의 데이터를 저장하고 새 변수는 수정 후의 데이터를 저장합니다
실행 생성 삭제 트리거 :
이번에 기존 변수에 저장된 삭제할 데이터
테스트: 테스트는 반드시 해당 연산의 emp 테이블이어야 위에서 정의한 트리거가 실행됩니다.
구문 구조:
drop trigger [schema_name.](数据库名)trigger_name(触发器名);
schema_name(데이터베이스 이름)을 지정하지 않으면 기본값은 현재 데이터베이스입니다.
show Triggers 명령을 실행하면 트리거의 상태, 구문 및 기타 정보를 볼 수 있습니다.
문법 구조:
show triggers;
위 내용은 MySQL에서 함수와 트리거를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!