Trigger는 데이터 무결성을 보장하기 위해 SQL 서버에서 제공하는 방법으로, 이벤트에 의해 트리거됩니다. 트리거는 데이터 무결성 제약 조건과 비즈니스 규칙을 적용하는 데 자주 사용됩니다.
계정 및 account_log 데이터 테이블 만들기:
CREATE TABLE account( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20), money DOUBL ); INSERT INTO account VALUES (NULL,'张三',1000),(NULL,'李四',1000); CREATE TABLE account_log( id INT PRIMARY KEY AUTO_INCREMENT, operation VARCHAR(20), operation_time DATETIME, operation_id INT, operation_params VARCHAR(200) );
// 语法格式: BEFORE|AFTER INSERT: 插入 UPDATE:更新 DELETE:删除 // DELIMITER $ // CREATE TRIGGER 触发器名称 // BEFORE|AFTER INSERT|UPDATE|DELETE // ON 表名 // FOR EACH ROW // BEGIN // 触发器要执行的功能; // END$ // DELIMITER ; // 创建INSERT型触发器。用于对account表新增数据进行日志的记录 DELIMITER $ CREATE TRIGGER account_insert AFTER INSERT ON account FOR EACH ROW BEGIN INSERT INTO account_log VALUES (NULL,'INSERT',NOW(),new.id,CONCAT('插入后{id=',new.id,',name=',new.name,',money=',new.money,'}')); END $ DELIMITER ; // 向account表添加一条记录 INSERT INTO account VALUES (NULL, '王五', 2000); // 查询account表 SELECT * FROM account;
// 查看标准语法: SHOW TRIGGERS; // 查看触发器 SHOW TRIGGERS; // 删除标准语法:DROP TRIGGER 触发器名称; // 删除account_delete触发器 DROP TRIGGER account_delete;
네 가지 주요 기능:
원자성:
일관성:
격리:
지속성:
4. 트랜잭션 작업
SQL 문 실행:
트랜잭션 종료(제출|롤백): 제출
: 문제 발생, 데이터가 트랜잭션이 시작되었을 때의 상태로 복원됨기본 작업
-- 开启事务 START TRANSACTION; -- 执行SQL语句 UPDATE account SET money=money-500 WHERE NAME='张三'; -- 回滚事务(出现问题) ROLLBACK; -- 提交事务(没出现问题) COMMIT;
// 查看提交方式 SELECT @@AUTOCOMMIT; -- 1代表自动提交 0代表手动提交 // 修改事务的提交方式 SET @@autocommit=1;
커밋되지 않은 읽기:
커밋된 읽기:
반복 읽기:
Serialized
문제가 발생할 수 있음:
더티 읽기:
는 커밋되지 않은 다른 데이터를 의미합니다. 한 트랜잭션 중에 ted 트랜잭션을 읽었습니다.반복 불가능한 읽기:
한 트랜잭션 중에 다른 트랜잭션에서 데이터를 읽는 것을 의미합니다. 수정되어 제출된 데이터로 인해 두 쿼리 간에 일치하지 않는 쿼리 결과가 발생했습니다팬텀 읽기:
특정 레코드가 존재하는지 선택하세요. 이 레코드를 삽입하려고 준비했는데, 삽입 실행 시 이 레코드가 이미 존재하여 삽입할 수 없는 것을 발견했습니다. 또는 삭제 삭제가 존재하지 않는데 삭제가 성공한 것으로 확인됨격리 작업
// 查询数据库隔离级别 SELECT @@TX_ISOLATION; // 修改数据库隔离级别 SET GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串;
위 내용은 MySQL 데이터베이스에서 트리거 및 트랜잭션을 적용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!