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
운영게시판
최근게시물
PostgreSQL Q&A 5796 게시물 읽기
No. 5796
룰 혹은 트리거 질문
작성자
장현성(siche)
작성일
2005-01-13 11:52
조회수
2,319

이걸 어떻게 처리해야 효율적인가 궁리중인데

잘 떠오르질 않네요

 

테이블이 2개가 있습니다.

 

A table

 

code serial

price int4

key bool

 

B table

 

code serial

price int4

 

 

자료들..

 

SELECT * FROM A

 

code price key

----------------------

1 1000 f

2 2000 f

3 3000 f

 

SELECT * FROM B

 

code price

--------------

1 100

2 50

1 10

3 400

1 300

2 700

 

뭐 이런식으로 있습니다.

테이블 B에 insert 를 하는데.

입력이 되면 테이블 B에서 해당하는 코드의 가격의 합을 구해서

그 가격이 테이블 A 에서 해당하는 코드의 가격과 비교해서 가격이 같으면

a 테이블의 key 필드를 t로 업데이트 하는 것입니다..

 

말이 좀 복잡한가요?

 

INSERT INTO b ('1','100')

 

SELECT price FROM A WHERE code = '1' 과

SELECT SUM(price) FROM B WHERE code = '1' 이 같다면

 

UPDATE a SET key = 't' WHERE code = '1'

 

값이 다르면 아무것도 안함.

 

이런순서를 자동화를 하려고 하는데,

 

먼저 떠오르는게 RULE 이었는데,

CASE WHEN 구문이 안되더군요

그래서 트리거를 써야 하나 고민하다가

간단한거니까 그냥 프로그램에서 저 순서를 죽~ 써줄까도 생각해보고 ㅠㅠ

 

어떤방법으로 해결하는게 가장 좋은 방법일까요???

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

음 ..

왜 저는 pre 태그를 쓰면

저렇게 길게 늘어나는거죠.. -0-

불여우에서 직접 pre 태그 써서 입력하는데요..음;;

장현성(siche)님이 2005-01-13 11:53에 작성한 댓글입니다.

저의 생각에는 트리거도 좋구, 룰도 좋지만 한 테이블에 대한 연산을 하는 식이 여기저기 많아지는 것을 방지하기 위해 입력용 SP, 갱신용 SP, 삭제용sp를 만들고 그 sp만을 가지고 테이블 작업을 하면, 굳이 트리거나 룰의 도움을 받으면서까지 작업을 하지 않으셔도 되리라 생각이 들구요.

트리거나 룰은 모든 디비가 돌아가는 것을 보고 로직과 관련없는 처리를 보조적으로 사용하시는 것이 좋을듯 싶으네요.

때송이님이 2005-01-13 16:18에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5800[mysql]password() 함수와 같은기능 [3]
아놀드
2005-01-15
3124
5799Postmaster의 CPU점유율 조정 방법.. [1]
노방래
2005-01-14
2427
5798중복된 데이터 제거하기 [3]
유인상
2005-01-14
4833
5796룰 혹은 트리거 질문 [2]
장현성
2005-01-13
2319
5795RC5가 스을쩍~ 나왔네요 [3]
신기배
2005-01-12
2154
5793www.postgresql.org에서 한국이 나오지안아요. [3]
joesp
2005-01-11
2600
5790덤프시 sequence 가 다르게 덤프가 되는 문제가 생겨서요.. [1]
pg초보
2005-01-10
2788
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.029초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다