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 7069 게시물 읽기
No. 7069
트리거는 어떻게 해야하는지..
작성자
스치는인연
작성일
2007-03-02 14:29
조회수
4,519

현재 트리거를 사용해야할 부분이 있는데 적용을 못 시키겠습니다.

적용을 못 하기보다는...실력이 없음을..절실히 느끼며...ㅡ.ㅜ

테이블이 아래와 같이 두개가 있는데요

cmap테이블이 등록되거나, 변경되때 hosp_term_cd , hosp_term_div_stts 의 값을 
data  테이블의 hosp_term_cd , hosp_term_div_stts 에 적용하고 싶습니다.
단, 데이터가 있으면 변경하고 없으면 안해도 되는...
건데 이런 경우에는 트리거를 어떻게 사용해야 하는지...알고 싶습니다.
말이 질문이지, 그냥 해달라는 식이네요. 
죄송....-_-

create table cmap
(
  cmap_id numeric NOT NULL,
  cmap_term_id numeric NOT NULL,
  hosp_term_cd character(4) NOT NULL,
  hosp_term_div_stts numeric(1) NOT NULL DEFAULT 0,
  CONSTRAINT xpkcmap_term PRIMARY KEY (cmap_id, cmap_term_id)


CREATE TABLE data(
  cmap_id numeric NOT NULL,
  cmap_term_id numeric NOT NULL,
  md_no numeric(6) NOT NULL,
  md_list_cd character(2) NOT NULL,
  hosp_term_cd character(4),
  hosp_term_div_stts numeric(1)
  CONSTRAINT xpkcmap_data PRIMARY KEY (cmap_id, cmap_term_id, md_no, md_list_cd
)

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

DROP  TABLE  cmap;

DROP  TABLE  "data";



create table cmap (

  cmap_id numeric NOT NULL,

  cmap_term_id numeric NOT NULL,

  hosp_term_cd character(4) NOT NULL,

  hosp_term_div_stts numeric(1) NOT NULL DEFAULT 0,

  CONSTRAINT xpkcmap_term PRIMARY KEY (cmap_id, cmap_term_id)

) ;


CREATE TABLE "data" (

  cmap_id numeric NOT NULL,

  cmap_term_id numeric NOT NULL,

  md_no SERIAL,

  md_list_cd character(2) NOT NULL default 'a',

  hosp_term_cd character(4),

  hosp_term_div_stts numeric(1),

  CONSTRAINT xpkcmap_data PRIMARY KEY (cmap_id, cmap_term_id, md_no, md_list_cd)

);



drop FUNCTION  cmap_to_data_func();

CREATE  FUNCTION  cmap_to_data_func()  RETURNS  OPAQUE

AS

$function$

BEGIN


        EXECUTE ' INSERT INTO data (cmap_term_id, cmap_id, hosp_term_cd,hosp_term_div_stts) values ( '|| NEW.cmap_term_id || ','|| NEW.cmap_id || ',' || quote_literal(NEW.hosp_term_cd) || ',' || NEW.hosp_term_div_stts || ' ) ';



  RETURN  NEW;

END;

$function$

LANGUAGE plpgsql;



CREATE  TRIGGER  cmap_to_data before INSERT  OR  UPDATE  ON  cmap

FOR  EACH  ROW  EXECUTE  PROCEDURE  cmap_to_data_func();



INSERT  INTO  cmap(  cmap_term_id, cmap_id, hosp_term_cd,hosp_term_div_stts) values (  8.2, 4.3, 'abc',1 );

INSERT  INTO  cmap(  cmap_term_id, cmap_id, hosp_term_cd,hosp_term_div_stts) values (   7.6, 9.2, 'abcd',3 );



SELECT  *  FROM  cmap;

SELECT  *  FROM  data;

joesp님이 2007-03-02 21:10에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7072잔액 계산을 하는 쿼리 질문입니다. [1]
가우나라
2007-03-06
4477
7071쿼리 질문입니다. [1]
조진우
2007-03-06
4578
7070PostgresSQL 7.3 -> 8.2.3 업그레이드 시 encoding error [1]
무적초보
2007-03-05
7382
7069트리거는 어떻게 해야하는지.. [1]
스치는인연
2007-03-02
4519
7067해당 필드에 유니코드데이타가 들어있는지 아는 방법? [5]
dba
2007-02-28
5593
7066퍼미션 문제 [1]
조수한
2007-02-28
4344
7065어떤게 좋아요?
또질문
2007-02-28
4185
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다