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
운영게시판
최근게시물
MS-SQL Q&A 6675 게시물 읽기
No. 6675
dvd대여프로그램을 만들고있는데 질문있습니다.
작성자
김순인(qqwwee00)
작성일
2013-06-02 20:57ⓒ
2013-06-02 21:02ⓜ
조회수
8,175

현재 dvd를 대여할때마다 dvd포인트가 1씩증가 하는 트리거를 작성중입니다.

CREATE TRIGGER POINT_ADD1
ON RENT
FOR INSERT
AS
UPDATE MEMBERSHIP
SET POINT=POINT+1
WHERE MEMBER_NO=(         )

위 트리거를보면 rent라는 테이블에 dvd 대여 했을때 일어나는 insert가 일어났을때

membership테이블의 포인트를 1씩증가하는 트리거입니다.

그런데 where절에서 membership의 회원넘버와 rent에서 회원넘버가 같은 곳의 포인트만 증가시켜야는데

위식에서 rent테이블의 속성 member_number와 membership의 속성 member_no를 비교하려는데 rent의 member_number를 가져오지 못하니 비교가 안됩니다.

어떻게 해야할가요...괄호에 중첩질의 를 하려해도 어떻게 해야할지 모르겟고 rent테이블에서 마지막들어온값의 member_number를 얻어오는 방법을 알면 될거같은데

마지막 들어온값을 구하는 쿼리문은 없으니... 

즉 위 트리거식에서 rent의 member_number값을 참조할 수 있는 방법좀 알려주세요..

도움을 요청합니다.

rent테이블의 member_number는 membership 테이블의 member_no의 외래키이자 기본키입니다.

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

UPDATE MEMBERSHIP
SET POINT = POINT + 1
FROM MEMBERSHIP AS mem
INNER JOIN inserted AS ins ON mem.member_number = ins.member_number
;

으로 원하시는 답은 될 것으로 생각됩니다만...

 

회원이 한 번에 여러 개의 DVD를 빌려가면서 해당 대여 기록을 한번에 rent테이블에 입력하면 포인트가 대여 DVD 갯수만큼 증가하지 않고 1만 증가하는 문제가 있을 것으로 생각됩니다.
예: INSERT INTO RENT( member_number, dvd_number ) SELECT 1, 3 UNION ALL SELECT 1, 4;

 

출시된지 오래된 DVD를 대여하는 경우에는 싸게 대여하면서 그때는 포인트를 적게 주고싶다든지, 일정한 기간동안 이벤트로 포인트를 2배로 적립시켜 주고 싶다든지 등의 요구사항이 생길때마다 trigger에 들어있는 1이라는 값을 증가시키는 것이 추후 요구사항 반영하기 힘든 형식이 될 것이 우려스럽습니다.

우욱님이 2013-06-03 08:19에 작성한 댓글입니다.
이 댓글은 2013-06-03 08:19에 마지막으로 수정되었습니다. Edit

ㅎㅎ 정말 감사합니다.

엄청 고생했는데 덕분에 해결했습니다.

 

김순인(qqwwee00)님이 2013-06-04 00:13에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6678시작 날짜와 종료 날짜 기간 동안의 특정 시간대의 데이터 검색 [2]
궁금이
2013-06-11
10962
6677WITH(NOLOCK) 요... [3]
초보입니다.
2013-06-05
9978
6676csv 파일 import 시키는 방법 문의 [1]
김상철
2013-06-04
10392
6675dvd대여프로그램을 만들고있는데 질문있습니다. [2]
김순인
2013-06-02
8175
6674(초보적인 질문) VIEW ===> 기본키(PK) 설정이 가능한가요.. [1]
김승철
2013-05-29
8360
6673db2 의 로직컬 테이블 들을 ms-sql 에서 쓸 수 있는 방법은?? [4]
김승철
2013-05-28
9199
6672ROW를 중첩하려면 어떻게 해야 하나요?ㅠㅠ [4]
김광현
2013-05-22
8208
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다