database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31256 게시물 읽기
No. 31256
트리거 쿼리 하루종일 오류 나는데 1064 오류 확인좀 부탁드립니다 ㅠ
작성자
hi
작성일
2019-08-13 01:47
조회수
2,049

CREATE TRIGGER updateTB AFTER UPDATE ON parking_space_tb

FOR EACH ROW

    BEGIN

         UPDATE parking_lots_tb SET empty_space = ( SELECT COUNT(empty_flag) FROM parking_space_tb where ( empty_flag = 0 AND parking_id_pk = NEW.parking_id_pk))

          WHERE parking_id_pk = NEW.parking_id_pk;

END;

 

parking_space_tb라는 테이블에 업데이트 트리거를 달아서 empty_flag라는 행이 업데이트 될때마다 해당 업데이트된 열의 parking_id_pk 를 가지고 empty_flag가 0인 컬럼을 모두 count하여

 parking_lots_tb의 empty_space라는 컬럼을 업데이트 시키려고 합니다 . 두테이블다 pk는 parking_id_pk고요 parking_space_tb의 pk이자 fk가 parking_id_pk인데어떡해야할까요..24시간넘겨고민하다 지금 여쭤봅니듀ㅠㅠ

이 글에 대한 댓글이 총 1건 있습니다.

1. 오라클의 경우 트리거 대상 테이블을 트리거 내에서 사용하면 안됩니다.
 - MySQL 은 어떤지 모르겠네요? 동일할 것으로 예상됩니다.
2. PK 정보가 맞나요?
 - 단일 PK 라면? COUNT 는 항상 1 만 나올텐데요?
 - 단일 PK 라면? COUNT 가 필요 없으므로 위 1번의 오류를 피할 수 있습니다.
 - 결합 PK 라면? 고민이 필요합니다.
3. 단일 PK인 경우?
  UPDATE parking_lots_tb
     SET empty_space = 1
   WHERE parking_id_pk = NEW.parking_id_pk
     AND NEW.empty_flag = 0
  ;
4. 결합 PK인 경우?
 - 최초 1회 전체 대상 count 값 갱신
 - 이후 트리거에서는 조건 맞으면 +1 처리하는 방법

마농(manon94)님이 2019-08-13 08:13에 작성한 댓글입니다.
이 댓글은 2019-08-13 08:21에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
31259게시판에서 데이터 속도개선방법 질문입니다.
원재호
2019-08-28
2065
31258CentOS7 MySQL 8.0.15 질문입니다.
김말포
2019-08-27
3595
31257쿼리 처리 순서 질문입니다. [1]
원재호
2019-08-16
2130
31256트리거 쿼리 하루종일 오류 나는데 1064 오류 확인좀 부탁드립니다 ㅠ [1]
hi
2019-08-13
2049
31255특정 테이블에 쿼리문 사용시 데이터베이스명을 명시해줘야 하는 현상 [2]
mattqnrp
2019-08-12
2164
31254프로시저 파라미터 입력 방법 (in사용시) [2]
김달풍
2019-08-02
1993
31253phpmyadmin 가져오기 구문 오류 문제 입니다
공부중
2019-07-26
2058
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다