*DB : interbase 5.0 (Local) *Tool : Delphi 4.0 C/S
인터베이스 테이블에서 자동으로 일련번호를 부여해 주기 위해서...
Interbase에서
1. CREATE TABLE TEMP (
ID_NO SMALLINT NOT NULL,
NAME VARCHAR(20),
CONSTRAINT pk_temp PRIMARY KEY (ID_NO)
)로 테이블 생성한 후
2. CREATE GENERATOR GEN_TEMPID 로 GENERATOR 생성
3. CREATE TRIGGER TTEMP_IDNO FOR TEMP
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ID_NO = GEN_ID(GEN_TEMPNO, 1);
END 로 트리거를 만들었습니다.
그리고 델파이에서 DATABASE 컴포넌트를 사용하고, Table 컴포넌트를 사용하여
tbTEMP.Insert; 후 NAME 필드에만 값을 넣고 tbTEMP.Post;를 하면
ID_NO 필드는 반드시 값을 가져야 한다고 EDBENGINERROR가 발생합니다.
대신 Query 컴포넌트를 사용하여
INSERT INTO TEMP (NAME) VALUES ('ABC')를 사용할 경우는
에러없이 GENERATOR가 정상적으로 작동하여 일련번호가 부여됩니다.
Table 컴포넌트를 사용해서 Insert후 Post해도 GENERATOR가 정상적으로
작동해야 하는 걸로 알고 있는데 안되는 이유를 모르겠습니다. 아시는 분은
꼭 알려주십시오. 메일로 알려주시면 더욱 감사하겠습니다.