Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space ML1 and version 5.3
Sv translation
languageen

The ClustrixDB implementation for triggers is intended to provide compatibility with the MySQL implementation of triggers. For general semantics and operation of triggers refer to the MySQL documentation for triggers.

Caveats for triggers

  • ClustrixDB does not perform create-time checks on triggers. If a trigger is defined with access errors (permissions, modifying table the trigger is defined on, etc.), MySQL will generate an error on the  CREATE TRIGGER statement, however, ClustrixDB will generate an error when the trigger is executed (i.e. on  INSERT/UPDATE/DELETE).
  •  NOT NULL columns within a BEFORE trigger do not retain the NOT NULL property while within the trigger. In MySQL, a NOT NULL column set to NULL within a trigger will immediately generate an error. In ClustrixDB, however, the column will be set to NULL. Unless changed to NOT NULL later in the trigger, an error will occur when the DML is executed.
    • NOT NULL AUTO_INCREMENT columns are an exception. In MySQL, NOT NULL AUTO_INCREMENT columns set to NULL within a trigger are immediately and silently converted to 0. In ClustrixDB the column will be set to NULL. After a trigger finishes executing, but before the subsequent DML operation, any NOT NULL AUTO_INCREMENT columns with NULL values will be silently converted to 0, allowing auto increment to work correctly.
  • ClustrixDB does not support triggers that modify columns with the ENUM data type. No error message will be given when creating or executing triggers that modify ENUM types, but the results are undefined. For example, if a table has a ENUM column state, then the effects of the statement NEW.state = NEW.state + 1 are undefined. Use explicit values instead, like NEW.state = "RUNNING".
  • ClustrixDB supports the TRIGGER permission, but the SUPER permission also grants all abilities associated with the trigger permission.
  • Query logs from BEFORE and AFTER triggers will appear before the logs for the statement invoking the trigger.

 

Sv translation
languageko

ClustrixDB는 MySQL의 트리거 기능과 호환이 가능한 자체 구현의 트리거를 제공합니다. 트리거의 일반적인 의미와 작업에 대한 내용은 MySQL 설명서를 참조하십시오.

트리거에 대한 주의사항

  • ClustrixDB는 트리거 생성 시 검사를 수행하지 않습니다. 트리거에 액세스 오류(권한, 트리거가 정의된 테이블 변경 등)가 정의된 경우 MySQL은 CREATE trigger문에서 오류를 생성하지만, ClustrixDB는 트리거가 실행될 때 오류를 발생합니다 (예: INSERT / UPDATE / DELETE).
  • BEFORE 트리거 내의 NOT NULL 열은 트리거 내에서 NOT NULL 속성을 유지하지 않습니다. MySQL은 NOT NULL 열을 트리거에서 NULL로 설정하면 즉시 오류가 발생합니다. 그러나 ClustrixDB에서 열은 NULL로 설정됩니다. 나중에 트리거에서 NULL이 아닌 값으로 변경되지 않으면 후속 DML 작업 시 트리거 이후에 오류가 발생합니다.
    • NOT NULL AUTO_INCREMENT 열은 예외입니다. MySQL에서는 트리거 내에서 NULL로 설정된 NOT NULL AUTO_INCREMENT 열은 즉시 0으로 변환됩니다. ClustrixDB에서 열은 NULL로 설정됩니다. 트리거가 실행을 종료한 후 후속 DML 작업 전에 NULL 값을 가진 NOT NULL AUTO_INCREMENT 열은 0으로 자동으로 변환되어 자동 증가가 올바르게 동작합니다.
  • ClustrixDB는 ENUM 데이터 타입의 열을 변경하는 트리거를 지원하지 않습니다. ENUM 유형을 변경하는 트리거를 작성하거나 실행하면 오류 메시지가 표시되지 않지만, 결과는 정의되지 않습니다. 예를 들어, 테이블에 ENUM 열 "state"가 있는 경우 NEW.state = NEW.state + 1문의 결과는 정의되지 않습니다. NEW.state = "RUNNING"과 같이 명시적인 값을 대신 사용하십시오.
  • ClustrixDB은 TRIGGER 권한을 지원하지만, SUPER 권한은 트리거 권한에 관련된 모든 권한을 부여합니다.
  • `root`@`localhost` 사용자는 ClustrixDB에 존재하지 않기 때문에 이 definer로 만들어진 트리거는 실행되지 않습니다. 이 문제를 해결하려면 definer `root`@`localhost`에서 작성된 모든 트리거를`root`@`%`로 변경합니다.
  • BEFORE와 AFTER 트리거에서 쿼리 로그는 트리거를 호출하는 문(statement) 로그 앞에 표시됩니다.