🎛️

DB Query

타입
예시
Property
Property 1

하나의 랜덤 필드를 가지는 더미 생성하기

SELECT 'user_' || seq || '@' || ( CASE (RANDOM() * 2)::INT WHEN 0 THEN 'gmail' WHEN 1 THEN 'hotmail' WHEN 2 THEN 'yahoo' END ) || '.com' AS email FROM GENERATE_SERIES(1, 100) seq;
SQL
복사
|| 연산자를 통해 문자열을 조합 할 수 있다.
CASE 값 WHEN 조건 THEN 결과 END 문을 이용하여 조건 처리를 할 수 있다.
GENERATE_SERIES(시작 값, 끝 값) 문을 이용하여 연속된 값을 가지는 임시 테이블을 생성한다.

SELECT 문을 활용하여 INSERT 하기

INSERT INTO users(email) SELECT 'moonsupport@google.com'
SQL
복사
이 때, 컬럼 수를 동일하게 해야 한다.
SELECT 이후에 값을 입력 하고 FROM 문을 생략 할 수 있다.

Trigger

DELIMITER // CREATE TRIGGER legacy_board_create_extension AFTER INSERT ON xe_modules FOR EACH ROW BEGIN INSERT INTO board_extension (board_id, skin) VALUES (NEW.module_srl, "BASIC_BOARD"); INSERT INTO trigger_legacy_board_create_extension_log (board_id) VALUES (NEW.module_srl); END; DROP TRIGGER legacy_board_create_extension;
SQL
복사
DELIMITER 는 구분자를 의미한다. Sequelize Migrate 파일에선 생략해서 써야 한다.
NEW 트리거에 걸린 테이블의 컬럼을 참조 할 수 있다.
DROP TRIGGER 로 트리거 삭제가 가능하다.

실행중인 쿼리 확인하기

SELECT * FROM pg_stat_activity ORDER BY query_start ASC;
SQL
복사
실행중인 쿼리 취소하기
실행 결과는 성공, 실패를 true, false로 반환한다. pid 정보는 위 쿼리에서 확인된 pg_stat_activity.pid 값을 입력해야 함.
(버전에 따라 pg_stat_activity.procpid 일수도 있다.)
SELECT pg_cancel_backend(pid int);
SQL
복사