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 7234 게시물 읽기
No. 7234
트리거 만들어서 해봤는데..이상해요..
작성자
김명구(kmgsusan)
작성일
2007-10-08 01:37
조회수
5,562

create table s5 (
 no int,
 name varchar(100),
 complete timestamp
);

CREATE FUNCTION s5_func() RETURNS trigger
AS
$function$
BEGIN
 UPDATE s5 SET complete = NULL where no=new.no;
 RETURN NULL;
END;
$function$
LANGUAGE plpgsql;

CREATE TRIGGER s5 before UPDATE ON s5
FOR EACH ROW EXECUTE PROCEDURE s5_func();

insert into s5 values(1, 'dd', now());

이렇게 한후...다음 쿼리문을 실행하면
update s5 set name='22' where no=1;

다음과 같이..
QL statement "UPDATE s5 SET complete = NULL where no= $1 "
PL/pgSQL function "s5_func" line 2 at SQL statement
SQL statement "UPDATE s5 SET complete = NULL where no= $1 "
PL/pgSQL function "s5_func" line 2 at SQL statement
SQL statement "UPDATE s5 SET complete = NULL where no= $1 "
PL/pgSQL function "s5_func" line 2 at SQL statement
SQL statement "UPDATE s5 SET complete = NULL where no= $1 "
PL/pgSQL function "s5_func" line 2 at SQL statement
SQL statement "UPDATE s5 SET complete = NULL where no= $1 "
PL/pgSQL function "s5_func" line 2 at SQL statement
뜨는데,,,..잘 모르겠어요..아시는분 부탁좀 드릴께요..;;;

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

어떤게 문제라는 것인지요?

박성철(gyumee)님이 2007-10-08 14:46에 작성한 댓글입니다.

function 에서

return nulll 을

return new 로 해야 하지 않을까요?

tyro님이 2007-10-08 22:05에 작성한 댓글입니다. Edit

s5 테이블을 업데이트 하면 before 이벤트로

update s5 set complete = NULL where no=new.no

가 동작하게 하고 싶으신건데.. 요건 안되는게 맞을것 같아요;


s5 테이블에 업데이트 -> 트리거 동작 -> s5 테이블 업데이트 .... 무한루프죠; 이럴 경우 오라클에서는 mutation 머시기 에러가 납니다. 변화중인 테이블에 트리거가 다시 변화를 주려 한다고요.


원하는 동작을 하시려면요..


BEGIN

  new.complete := null;

  return new;

END;


이렇게 하시면 됩니다. 이놈은 before update, for each row 일 때 동작합니다.

[before | after] 동작

for each [row | statement]

앞뒤의 값들에 따라서 어떻게 다르게 동작하는지 알아보세요~

신기배(소타)님이 2007-10-09 01:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7237vacuum 이 제대로 되지 않습니다. [2]
dontgo
2007-10-10
5546
7236DB백업이란걸해보려고, 여기에서 글을 찾아 pg_dump라는 키워드를 찾았으나.. [4]
Choi
2007-10-10
6269
7235postgresql 8.3 beta1의 향상된 기능 중 어떤게 맘에 드시나요? [4]
박성철
2007-10-09
6134
7234트리거 만들어서 해봤는데..이상해요.. [3]
김명구
2007-10-08
5562
7233pgsql에서 특정 쿼리문에 대한 결과를 csv 파일또는 txt파일로 다이렉트로 out 가능한지요 [2]
김명구
2007-10-06
5760
7231셀렉트시 row번호 넣기 [4]
moons
2007-10-04
5577
7230db connect시에.. [1]
영광
2007-09-28
5514
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다