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 3730 게시물 읽기
No. 3730
넘 무성의한 코멘트같아 추가로 적습니당..
작성자
김대성
작성일
2001-12-13 00:15
조회수
1,806

CREATE CONSTRAINT TRIGGER "<unnamed>" <---제약조건을 만드는명령

AFTER INSERT OR UPDATE ON <--삽입, 갱싱 후에

"tb_cont_d" FROM "tb_cont" <---tb_cont 테이블의 tb_cont_d 의 컬럼

NOT DEFERRABLE <-- 지연되지 않는 제약조건임

INITIALLY IMMEDIATE <-- Trigger가 발생하자 마자 즉시검사

FOR EACH ROW <-- 매 ROW마다

EXECUTE PROCEDURE "RI_FKey_check_ins" <--프로시저 이름('<unnamed>', 'tb_cont_d', 'tb_cont', 'FULL', 'no', 'no'); <-- 인수

 

지연되지 않는 제약조건이라 함은 정의한 제약(Constraint)를 사건이 발생하자마자 즉시! 검사해서 무결성을 검사하는 것을 말하고

 

지연된 제약조건이라함은 Transaction이 끝날때 즉, Commit시에 제약조건을 한꺼번에 검사하여 위반하는 ROW가 있으면 모든 Transaction을 되돌려 놓는다는 말입니다. 대량의 load시에 이것이 있으면 성능향상에 도움이 되겠죠..

 

님께서 만드신 Table 은 제약조건이 즉시즉시 체크되게 NOT DEFERRABLE로 되어 있군요. 기본값입니당..

 

<unnamed>라 함은 Constraint이름을 주시지 않을때 기본이름인가 보죠? 아님 님께서 <unnamed>라고 고쳐서 올리신건가요? 덤프떠본 적이 없어서 결과가 어떻게 되는지 모르겠음..

 

컬럼명과 테이블명에서 ""로 둘러싸여 있는것은 PostgreSQL의 식별자(Identifier:쉽게 말해서 언어(Language)에서의 변수명)는 " " 로 둘러싸는 버릇이 있답니다. 그래서 붙은 거구요. 테이블이나 컬럼정의하실때 " "로 싸시면 공백과 특수문자도 이름으로 사용할 수 있답니다. ..

 

 

 

-- 소타 님이 쓰신 글:

>> 안녕하세요

>>

>> 테이블을 생성할때 references 테이블(컬럼) match full on delete cascade on update cascade 라는 옵션을 주고 생성하는것과 같은 효과를 CREATE CONSTRAINT TRIGGER로 주려면 어떻게 해야 하나요?

>>

>> DB를 덤프시켜서 보면 references 라는 옵션은 없고

>> CREATE CONSTRAINT TRIGGER로 해서 되어 있던데 문법을 모르겠습니다.

>>

>> 예를 들면

>> tb_cont 라는 테이블과 tb_cont_d 라는 테이블을 만들때

>> tb_cont(no) 와 tb_cont_d(no)를 references로 묶었습니다

>> tb_cont 가 상위에 있는 형태이구요

>>

>> 그랬더니

>> CREATE CONSTRAINT TRIGGER "<unnamed>" AFTER INSERT OR UPDATE ON "tb_cont_d" FROM "tb_cont" NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE PROCEDURE "RI_FKey_check_ins" ('<unnamed>', 'tb_cont_d', 'tb_cont', 'FULL', 'no', 'no');

>>

>> 이런식으로 되던데 문법설명을 좀 해주세요

>> 프리마리키로 지정되어 있지 않은 테이블들을 엮으려고 하는데 어렵네요 -.-;

>> 한글문서는 없는거 같고 영문문서는 너무 어려워서 =_=;

>> 그럼 답변 부탁드립니다.

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

감사합니다.

해결하는데 많은 도움이 되었습니다 :)

소타님이 2001-12-13 20:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3733상속에 대한 재미있는 사실...
김대성
2001-12-13
1541
3734┕>Re: 상속에 대한 재미있는 사실...
김상기
2001-12-14 08:32:45
1546
3732상속때문에 문제 여쭙니다 [3]
김대성
2001-12-13
1483
3731pgsql에는 zerofill이 없나요? [1]
이은호
2001-12-13
1507
3729CREATE CONSTRAINT TRIGGER에 대한 질문입니다. [1]
소타
2001-12-12
1710
3730┕>넘 무성의한 코멘트같아 추가로 적습니당.. [1]
김대성
2001-12-13 00:15:40
1806
3724[질문] 왕처버 질문입니다.
정성훈
2001-12-10
1403
3725┕>Re: [질문] 왕처버 질문입니다.
fith
2001-12-10 19:29:19
1484
3720Postgres7.1에jdbc로 한글을 입력할때 문제
이경익
2001-12-07
1416
3721┕>Re: Postgres7.1에jdbc로 한글을 입력할때 문제
이경익
2001-12-07 17:57:39
2073
3719죄송합니다만 아무리찾아도 없기에 또다시질문올립니다.
조원준
2001-12-06
1557
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다