August 13, 2021
Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법이다.
Atomic하다. : 하나의 SQL처럼 동작한다.
예) 은행 계좌 이체
BEGIN 전의 상태로 돌아가고 싶다면 ROLLBACK을 실행한다.
BEGIN; -- START TRANSACTION
A의 계좌로부터 인출;
B의 계좌로 입금;
END; -- COMMIT
autocommit = True
autocommit = False
현재 autocommit 값 확인
+) TRUNCATE는 트랜잭션 안에서 사용을 해도 모든 레코드를 삭제한다. (트랜잭션을 지원하지 않음)
자주 사용하는 SQL 쿼리(SELECT)에 이름을 주고 그 사용을 쉽게 하는 것이다.
MySQL 서버단에 저장되는 SQL 쿼리들
정의 문법
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
statements;
END //
DELIMITER;
호출 문법
CALL stored_procedure_name(argument_list);
값(Scalar)을 하나 리턴해주는 서버쪽 함수이다. (특정 데이터베이스 밑에 등록됨) (레코드 리턴 X)
INSERT/DELETE/UPDATE 실행 전후에 특정 작업을 수행하는 것이 가능하다.
NEW/OLD modifier
CREATE TRIGGER 트리거이름
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name FOR EACH ROW
trigger_body;
SELECT/UPDATE/INSERT/DELETE 등의 쿼리가 어떻게 수행되는지 내부를 보여주는 SQL 명령
테이블에서 특정 찾기 작업을 빠르게 수행하기 위해서 MySQL이 별도로 만드는 데이터 구조
Index는 SELECT/DELETE/JOIN 명령을 빠르게 하지만 INSERT/UPDATE 명령은 느리게 하는 단점이 존재한다.
CREATE TABLE 할 때 추가 (컬럼 속성)
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT,
index_col VARCHAR(20),
PRIMARY KEY (id),
INDEX index_name (index_col)
);