FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird FAQ
[21] 테이블에 자동증가 프라이머리 키를 만들려면?
박지훈.임프 [cbuilder] 17347 읽음    2006-12-02 18:00
질문
자동증가 프라이머리 키 컬럼을 만들려면 어떻게 해야 합니까? 그리고 프라이머리 키에 NOT NULL 은 강제 사항입니까?

답변
파이어버드에서 자동증가 PK를 만들려면 제너레이터를 만들고 BEFORE INSERT 트리거를 설정하면 됩니다.
    CREATE GENERATOR GEN_PK_ATABLE;
    COMMIT;

테이블에 BIGINT 혹은 INTEGER 타입의 컬럼을 추가하고(여기서는 ATABLE_ID), 물론 NOT NULL 이어야 합니다.
키 필드의 값을 자동으로 주기 위한 트리거는 다음과 같습니다.
    CREATE TRIGGER BI_ATABLE FOR ATABLE
    ACTIVE BEFORE INSERT
    AS
    BEGIN
      IF(NEW.ATABLE_ID IS NULL) THEN 
        NEW.ATABLE_ID = GEN_ID(GEN_PK_ATABLE, 1);
    END

원문 : http://firebird.sourceforge.net/index.php?op=faq
남병철.레조 [lezo]   2006-12-27 16:50 X
ㅋ... 테이블 이름 참조가 아니라 NEW, OLD 참조로 하네요 -_-;
임프님 글 보고서 삽질이 중단 ㅠ.ㅠ...  (파이어버드 1.5 책 보던중...)

set term !!;
create trigger trig_gen_seq for guestbook
    before insert position 0 as
    begin
        new.seq = gen_id(gen_seq, 1);
    end!!
set term ;!!

+ -

관련 글 리스트
21 테이블에 자동증가 프라이머리 키를 만들려면? 박지훈.임프 17347 2006/12/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.