728x90
테이블 락을 걸경우에 보통 아래형식으로 테이블 락을 걸어준다
START TRANSACTION;
SELECT column FROM your_table_name WHERE id = #column# FOR UPDATE;
하지만 락이 안걸릴 경우가 있는데 그 이유는 TABLE에 ENGINE 타입이 아니라서 그럴 수 있다.
그럼 아래 쿼리문을 돌려보면 테이블별 ENGINE 타입이 나온다.
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'db이름';
확인을 하고 타입이 innoDB타입이 아니면
아래처럼 락테이블을 새로 하나 만들어서 그 테이블을 락 테이블로 사용하거나
CREATE TABLE table_lock (
id VARCHAR(100) NOT NULL
) ENGINE=InnoDB;
INSERT INTO table_lock (id) VALUES ('lock');
START TRANSACTION;
SELECT id FROM your_table_name WHERE id = 'lock' FOR UPDATE;
아래 쿼리문을 사용해 ENGINE 타입을 = InnoDB 로 바꿔주고 사용한다.
단!! 아래 쿼리는 수정하는데 이유는 모르겠지만 시간이 오래걸림 아주오래....
ALTER TABLE comtnmtgplacemanage ENGINE=InnoDB;
헤헤
'SQL > Muzi' 카테고리의 다른 글
더미데이터 만들기 (0) | 2024.04.02 |
---|---|
SQL 삭제된 데이터 복구 및 되돌리기(오라클 플레시백)Flashback (0) | 2023.10.06 |
최프 SQL 쿼리문 (0) | 2023.09.27 |
sql 연습 (0) | 2023.08.04 |
참조무결성(DB삭제시 자식테이블 삭제) (0) | 2023.08.02 |