MySQL 트리거는 데이터베이스 쿼리, 파일 작업 및 데이터 처리와 같은 자동화 된 작업으로 PHP 프로젝트를 단순화합니다. 테이블에서 동작 전후에 자동으로 호출됩니다 (삽입, 업데이트, 삭제).
트리거는 MySQL 버전 5.0.2에 도입되었으며 해당 권한을 생성해야합니다. 데이터베이스에는 생성 된 고유 한 이름이 있어야하며 원래 SQL 문이 실행될 때만 해고됩니다.
트리거는 테이블 세트의 무결성을 유지하고, 새로운 인서/삭제가있을 때 통계 테이블을 자동으로 증가 또는 감소시키고, 데이터베이스 내 데이터의 변경을 기록하고, 테이블을 다른 테이블과 동기화합니다.
MySQL 트리거는 웹 사이트 성능에 긍정적 인 영향을 줄 수 있으며 개발자가 운영을 처리하기 위해 많은 PHP 코드를 작성하지 않도록 할 수 있습니다. 특정 데이터 변경에 응답하는 작업을 자동으로 수행하는 데 사용할 수 있습니다.
우리가 쓴 많은 코드는 작업을 수행하는 것입니다. 데이터베이스 쿼리, 파일 작업, 데이터 처리 등이든,이 모든 것은 스크립트가 의도 한 목적을 달성 할 수 있도록하는 것입니다. 그러나 이전 작업을 확인하기 위해 때때로 작성 해야하는 코드가 얼마나 필요한지 알았습니까? 최근 프로젝트 중 하나는 다소 번거로운 문제와 관련이 있었으며, 그로 인해 모든 데이터가 각 작업 후에 내 테이블에 동기화되도록하기 위해 수많은 쿼리를 사용하게되었습니다. 이것은 우아하지 않으며 상당히 간단한 스크립트 였지만 복잡한 쿼리 페이지가되었습니다. 유지 보수 관점에서 볼 때 이것은 실현 가능하지 않으며 페이지 기능의 일부를 업데이트하고 싶을 때 악몽입니다. MySQL 트리거가 내 프로젝트에 들어가는 것은 여기에 있습니다. MySQL이 트리거로 더 많은 작업을 수행하도록함으로써 내 프로젝트의 PHP 측면은 크게 단순화됩니다. 따라서이 기사의 목적은 MySQL 트리거의 생성 및 사용에 대한 더 깊은 이해를 제공하여 독서가 끝날 때 자신의 프로젝트에서 사용할 수 있도록하는 것입니다.
MySQL 트리거는 무엇입니까?
트리거는 MySQL 버전 5.0.2에 소개되었으며 개발자로서의 작업을 단순화하는 데 도움이되는 MySQL의 추가 기능 중 하나 일뿐입니다. 테이블에서 동작 전후에 자동으로 호출됩니다 (삽입, 업데이트, 삭제). 트리거를 만들려면 적절한 권한이 있어야합니다. MySQL 5.1.6 이전에는 초 권한이 필요했지만 5.1.6에는 변경되었고 트리거 권한이 필요했습니다. 일반적으로 공유 호스팅 계획은 쉽게 남용되기 때문에 Super를 허용하지 않으므로 사용 방법에 따라 (가상) 전용 서버 또는 로컬 호스트와 같은 더 많은 권한이있는 서버에서만 사용할 수 있습니다. MySQL 버전. 트리거에 대한 다른 빠른 지침은 다음과 같습니다
트리거는 많은 경우에 매우 유용합니다. 잘 알려진 사용법은 외국 키가 사용되지 않을 때 쓸모없는 기록의 삭제를 트리거하여 테이블 세트의 무결성을 유지하는 것입니다. 또한 새로운 인서/삭제, 데이터베이스의 데이터 변경을 기록하고 테이블을 다른 테이블과 동기화하는 등을 자동으로 늘리거나 줄이는 데 사용될 수 있습니다. 이 기사에서는이를 사용하여 일부 계산을 전처리합니다. 이것은 우리가 시간당 £ 30에 홀을 임대하는 회사가있는 경우입니다. 그들은 홀에서 개최 된 각 이벤트의 이름, 시작 및 종료 시간을 기록한 다음 소득 테이블에서 지불 할 시간과 비용을 계산합니다. 이벤트의 이름과 시작 시간은 처음에 로비를 예약하기 위해 이벤트 테이블에 삽입 된 다음 이벤트가 끝난 후에 만 해당 행에서 임대 비용이 업데이트됩니다. 이벤트 기간 (몇 분)을 계산해야하며, 시작 시간이 종말 시간으로부터 차감되고, 임대료는 총 시간에 0.5 (시간당 £ 30, 50 펜스 당 50 펜스를 곱하여 임대료를 계산해야합니다. 분). PHP를 사용하여 이벤트 정보를 업데이트 할 때 (삽입 된 데이터를 선택하고, 기간 및 임대 비용을 계산 한 다음 수익 목록을 삽입하거나 업데이트 함) 이벤트 정보 계산을 수행하거나 트리거를 사용 하여이 프로세스를 자동화하고 감소 할 수 있습니다. 일부 PHP 코드. 두 개의 기본 테이블을 설정하고 일부 가상 구독 데이터를 이벤트에 삽입하여 작업을 시작하겠습니다.
두 테이블을 설정 한 후 CostCalc라는 트리거를 계속 만들 수 있습니다. 이벤트 테이블에서 업데이트가 발생한 후 트리거가 발사 된 다음 위에서 언급 한 계산을 수행합니다. 그런 다음 수익 목록을 삽입하거나 업데이트합니다 (기존 이벤트 ID가 설정된 경우).
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName
FOR EACH ROW
BEGIN
#action(s) to perform
END
로그인 후 복사
로그인 후 복사
로그인 후 복사
트리거 (이벤트 및 저장된 루틴과 유사)를 만들 때 가장 먼저해야 할 일은 트리거의 끝을 나타내는 새로운 구분기를 지정하는 것입니다. 이는 Delimiter 키워드를 사용하여 수행 한 다음 사용자 정의 기호 (또는 기호)를 사용하여 MySQL이 아니라 내부 명령문 만 실행하는 대신 트리거를 전체적으로 실행해야합니다. 그런 다음 트리거의 이름, 시간, 이벤트 및 트리거로 설정 될 테이블을 지정합니다. 이 예에서는 업데이트가 발생한 후 트리거의 시간을 설정했습니다. 그렇지 않으면 트리거를 실행하려면 이전의 이전 레코드를 반복합니다. 다음으로, 우리는 시작 ... End Compound 문을 사용하여 트리거의 기능을 수용합니다. 트리거의 본문은 먼저 두 가지 변수의 행과 시간을 선언합니다. 우리는 이벤트 테이블에서 행의 수를 선택합니다. 여기서 ID는 방금 수정 된 행을 말하고 event_start 및 event_end 시간의 1 개 (또는 2 개)가 수정되었으며 event_end 시간은 0과 같지 않습니다. 임대료는 이러한 변경을 통해서만 계산할 수 있으므로 손익 계산서에 필요한 조치가 필요한지 여부를 명확히하기위한 것입니다. 시간과 비용을 계산할 수 있다는 것을 알게되면 시간 변수가 열의 시작부터 끝까지 분과 동일한 시간 변수를 설정합니다. 이 숫자에 0.5를 곱하면 임대 비용도받을 수 있습니다. event_id 열은 고유하므로 이벤트 테이블에 해당하는 하나의 ID 만 가질 수 있습니다. 따라서 교체를 사용하여 테이블에서 기존 행을 업데이트하거나 새 행을 삽입합니다 (그렇지 않은 경우). MySQL 문에서는 오래된 키워드와 새로운 키워드가 위의 선택 및 대체 명령문에 사용되어 시간 변수 값의 표현식에 사용됩니다. 이 두 키워드의 사용은 상황의 이벤트와 트리거가 트리거 될 때에 따라 다릅니다.
새로운 키워드는 데이터베이스에 입력하는 들어오는 데이터에 액세스하는 데 사용됩니다. 삽입 및 업데이트 문에서만 사용할 수 있습니다.
이전 키워드는 레코드를 수정하기 전에 레코드의 현재 데이터에 액세스하는 데 사용됩니다. 업데이트 및 삭제 명령문에서만 사용할 수 있습니다.
트리거를 시작하는 데 사용될 해당 PHP 스크립트에는 클래스 (Eventhandler) 및 클라이언트 호출 코드가 포함됩니다. 클래스는 PDO를 통해 MySQL 데이터베이스에 연결되며 이벤트 컨텐츠를 업데이트해야 할 때 호출되는 메소드 updateEvent ()가 포함됩니다.
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName
FOR EACH ROW
BEGIN
#action(s) to perform
END
로그인 후 복사
로그인 후 복사
로그인 후 복사
우리는 먼저 이벤트 핸들러 클래스를 만듭니다. 여기서 속성 $ db가 생성자 메소드에 의해 설정된 PDO 클래스의 인스턴스를 보유하도록 정의됩니다. 그런 다음 3 개의 매개 변수가 정의되는 updateEvent () 메소드를 만들어냅니다. 첫 번째 매개 변수는 이벤트 테이블에서 업데이트 할 열을 지정하고 이름, 시작, 끝의 세 가지 값 중 하나를 허용합니다. 두 번째 매개 변수는 삽입 할 값 또는 업데이트 된 열의 현재 값을 보유하고 있으며 세 번째 매개 변수는 튜플의 ID를 업데이트 할 수 있습니다. 열 이름이 유효한지 확인한 후 매개 변수화 된 쿼리를 통해 테이블을 쿼리하고 최종적으로 행이 업데이트되었는지 확인합니다. 수업을 만든 후에는 계속해서 그것을 호출합니다. PDO 객체의 인스턴스를 이벤트 핸들러 클래스에 매개 변수로 전달합니다. 그런 다음 updateEvent () 메소드는 다른 값으로 4 회 호출되어 트리거가 이벤트 테이블에서 작성된 업데이트에 어떻게 반응하는지 보여줍니다. 처음 두 개의 업데이트는 이벤트 기간 및 임대료를 계산하는 데 필요한 정보가 없기 때문에 트리거 트리거가 행을 삽입하거나 업데이트하지 않습니다. 우리가 한 일은 이벤트 이름을 업데이트하고 시작 시간을 이틀만큼 지연시키는 것입니다. 그러나 다음 두 업데이트에는 첫 번째 업데이트가 종료 시간을 정의하기 때문에 트리거 기능이 필요합니다. 두 번째 업데이트는 1 시간 후에 종료 시간을 재정의하여 기간이 변경되어 임대 비용도 변경되었습니다. 테이블을 만들 때 테이블에 제약 조건을 부과하고 이벤트 ID 당 하나의 레코드 만 가질 수 있기 때문에 교체 명령문이 필요한 곳입니다.
<🎜 🎜> <<> 결론
MySQL 트리거는 제대로 사용하는 경우 웹 사이트의 성능에 긍정적 인 영향을 줄 수있을뿐만 아니라 그러한 작업을 처리하기 위해 많은 PHP 코드를 작성하지 않도록합니다. 제가 프로젝트에서하는 것처럼 프로젝트에서 유용하다는 것을 알기를 바랍니다. Fotolia의 사진
MySQL 트리거를 사용한 작동 자동화시 FAQ <🎜
<🎜 <<<<<<<<<<<<<<<<<<<<<>
MySQL 트리거는 무엇이며 어떻게 작동합니까?
MySQL 트리거는 테이블에서 발생하는 이벤트 (예 : 삽입, 업데이트 또는 삭제)에 응답하여 자동으로 호출되는 저장된 프로그램입니다. 트리거는 데이터베이스에서 정보의 무결성을 유지하는 데 사용되며 테이블에서 특정 작업이 발생할 때 자동으로 호출됩니다. 그들은 이벤트 전후에 실행 될 수 있습니다.
MySQL 트리거를 만드는 방법은 무엇입니까? MySQL 트리거 생성에는 트리거 이름, 트리거 이벤트 및 이벤트가 발생할 때 실행될 진술이 포함 된 트리거 진술이 포함됩니다. 기본 예는 다음과 같습니다.
CREATE TRIGGER TrigName [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tableName
FOR EACH ROW
BEGIN
#action(s) to perform
END
로그인 후 복사
로그인 후 복사
로그인 후 복사
MySQL을 사용하여 작업을 자동화하는 방법은 무엇입니까?
MySQL의 자동화는 트리거, 저장된 절차 및 이벤트를 통해 달성 할 수 있습니다. 트리거를 사용하여 특정 데이터 변경에 응답하여 수행 해야하는 작업을 자동화 할 수 있습니다. 저장된 절차를 통해 일련의 명령을 단일 호출 가능한 루틴으로 캡슐화 할 수 있습니다. 이벤트는 일정에 따라 실행되는 작업입니다.
MySQL 트리거의 한계는 무엇입니까?
MySQL 트리거의 일부 제한에는 다음이 포함됩니다. 단일 테이블 만 연결할 수 있고 결과 세트를 반환 할 수 없으며 매개 변수를 허용 할 수 없으며 저장 프로 시저처럼 직접 호출 할 수 없습니다.
MySQL 트리거를 디버그하는 방법은 무엇입니까?
디버깅 MySQL 트리거 디버거는 내장 디버거가 없기 때문에 어려울 수 있습니다. 그러나 값을 별도의 테이블에 삽입하여 실행 흐름을 추적하거나 MySQL 디버거와 같은 타사 도구를 사용하는 것과 같은 해결 방법을 사용할 수 있습니다.
MySQL 트리거 호출 저장 프로 시저를 트리거 할 수 있습니까?
예. 그러나이 작업을 수행 할 때 조심해야합니다. 관리 및 디버그가 어려운 복잡한 이벤트로 이어질 수 있습니다.
MySQL 트리거를 삭제하는 방법은 무엇입니까?
드롭 트리거 문과 트리거 이름을 사용하여 MySQL 트리거를 삭제할 수 있습니다. 예를 들면 :
MySQL 트리거를 데이터 검증에 사용할 수 있습니까?
예. 데이터가 테이블에 삽입되었거나 업데이트되는지 확인하고 그에 따라 작업을 수행하는 트리거를 만들 수 있습니다.
위 내용은 MySQL 트리거를 사용한 액션 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!