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 6271 게시물 읽기
No. 6271
trigger 예제 실행관련 질문
작성자
장재혁(jaejen)
작성일
2005-08-18 14:42
조회수
2,781

자료실에 있는 트리거 관련 자료에 있는 예제 입니다.

아래 내용을 파일로 만들어서 텍스트로 저장한 후 psql 프롬프트에서 \i filename 으로

실행을 시켰더니 에러가 납니다.

트리거나 프로시져 룰 등...오늘 첨 해봅니다..ㅡㅡ;

테이블 만드는 건 되는데...function, trigger을 어떻게 실행시키는지 궁금합니다.

에러내용은 ...

------------ 에러내용--------------

lbs=# \i triggertest.txt
CREATE TABLE
ERROR: language "plpgsql" does not exist
HINT: You need to use "createlang" to load the language into the database.
psql:triggertest.txt:28: ERROR: language "plpgsql" does not exist
HINT: You need to use "createlang" to load the language into the database.
ERROR: function emp_stamp() does not exist
psql:triggertest.txt:31: ERROR: function emp_stamp() does not exist

---------에러내용 끝 ----------------

 

------------------- 아 래 -----------------

CREATE TABLE emp (
empname text,
salary integer,
last_date timestamp,
last_user text
);

CREATE FUNCTION emp_stamp () RETURNS OPAQUE AS '
BEGIN
-- 주어진 empname과 salary를 확인
IF NEW.empname ISNULL THEN
RAISE EXCEPTION ''empname은 NULL값이 될 수 없다.'';
END IF;
IF NEW.salary ISNULL THEN
RAISE EXCEPTION ''% 는 NULL로 된 salary를 가질 수 없다'', NEW.empname;
END IF;

-- 월급을 받고 있는 사람 중에 종업원인가?
IF NEW.salary < 0 THEN
RAISE EXCEPTION ''% 는 음수의 salary를 가질 수 없다.'', NEW.empname;
END IF;

-- 언제 누가 월급을 조정했나?
NEW.last_date := ''now'';
NEW.last_user := current_user;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

---------------------아 래 끝 ----------------------------

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

Usage:
  createlang [OPTION]... LANGNAME [DBNAME]

Options:
  -d, --dbname=DBNAME       database to install language in

 

 

C:\PostgreSQLWin32\bin>createlang -d --dbname=lbs
createlang: missing required argument language name
Try "createlang --help" for more information.

 

createlang로 language를 인스톨 해보려 해도...

옵션이 잘못된건지 계속 헬프만 보라네여...ㅡㅡ

장재혁(jaejen)님이 2005-08-18 14:50에 작성한 댓글입니다.

createlang --dbname=lbs

이렇게 하십시오.

 

-d, --dbname=DBNAME

 

이 말은

 

createlang -d DB이름

 

또는

 

createlang --dbname=DB이름

 

 

이렇게 하라는 표현입니다. linux에서는 친숙한 표현인데 윈도우쓰시는 분들은 오해가 있을 수 있겠네요.

 

박성철(gyumee)님이 2005-08-18 15:03에 작성한 댓글입니다.

박성철님 답변 감사합니다.

말씀하신대로 실행해 보았지만...여전히 헬프만 보라구 하네여..ㅡ.ㅜ

 

C:\PostgreSQLWin32\bin>createlang -d lbs
createlang: missing required argument language name
Try "createlang --help" for more information.

 

C:\PostgreSQLWin32\bin>createlang --dbname=lbs
createlang: missing required argument language name
Try "createlang --help" for more information.

장재혁(jaejen)님이 2005-08-18 17:07에 작성한 댓글입니다.

ㅎㅎㅎ 제가 실수를 했군요. 오류만 보다 보니...

 

createlang 언어_이름 DB_이름

 

 

이렇게 하셔야 합니다.

 

createlang -d DB_이름 언어_이름

createlang --dbname=DB_이름 언어_이름

 

이렇게 해도 되구요.

 

createlang으로 여기 게시판 검색해 보면 많이 나와있으니까 보세요.

박성철(gyumee)님이 2005-08-18 18:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6274트리거에 관한 질문 몇가지... [1]
jaejen
2005-08-19
2826
6273fedora core 4 에서 pg_hba.conf 에서 trust 말고 다른 옵션은 ? [2]
양인철
2005-08-18
2431
6272createlang로 language 인스톨 질문 [2]
장재혁
2005-08-18
2122
6271trigger 예제 실행관련 질문 [4]
장재혁
2005-08-18
2781
6270[삭제됨]UNICODE DB에서 한글필드 Unique Index [5]
김남일
2005-08-18
2699
6269자바에서 postgresql 테이블의 변경(insert,update) 모니터 [3]
장재혁
2005-08-18
2206
6268pgsql에서 Text형 컬럼에 세이노 컬럼을 insert해보신분? [10]
이현순
2005-08-17
3312
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다