미미야 님이 쓰신 글 :
: 며칠을 삽질했습니다. 도와주십시오.
:
:
: create table db_table (
: num integer not null,
: datetime varchar(30) not null,
: id varchar(5) not null,
: temp varchar(5) not null,
: lumi varchar(5) not null,
: humi varchar(5) not null
: );
: 이렇게 테이블을 만들고 자동증가를 위해 처음에 검색하여
:
: CREATE GENERATOR no_gen;
:
: SET GENERATOR no_gen TO 0;
:
: CREATE TRIGGER no_trg FOR db_table
: BEFORE INSERT AS
: BEGIN
: NEW.num = GEN_ID(no_gen, 1);
: END;
:
: 이런식으로 하니
: CREATE GENERATOR no_gen;
: 부터 에러뜹니다.
: statement 에러라고라.. -607 에러네요..
: 제너레이터가 정의가 안되어 있다.. 뭐이런..
: 암튼 그래서 sequence로 바꾸어 보려고 합니다.
:
:
: 어디서 찾아서리
: 1. CREATE SEQUENCE no_seq;
:
: 2. SELECT NEXT VALUE FOR no_seq FROM db_table;
:
: CREATE TRIGGER no_trg
: FOR db_table ACTIVE BEFORE INSERT POSITION 0 AS
: BEGIN
: IF (NEW.num IS NULL) THEN NEW.num = NEXT VALUE
: FOR no_seq
: END;
: 를 하면 end가 잘못되었다고 104번 에러를 냅니다...
: 아 미치겠습니다..
:
: 다시 하니까 또 저 첫줄 1번부터 안된다고 나오네요.. 제발 좀 도와 주십시오...
: 테이블 구조는 위와 같고 num을 insert 할때마다 1씩 자동증가 하게끔 하고 싶습니다....
: 제대로된 문장을 제발 부탁드립니다..
안녕하세요. 까막입니다.
Create Generator 는 잘못된 곳이 없습니다.
아무래도, Create Ge... ,SET... ,Create Trg... 이 세 구문을 한번에 실행하려 해서 그런것이 아닌가 싶네요.
Sequence 에서 Trigger 부분은.
FOR No_Seq 에 ';' 를 붙이지 않아서 발생한 것이고요.
참고로, Generator 보다는 Sequence 를 권장하고요.
Trigger 사용은 권장하지 않습니다.
Trigger 를 사용해야 하는 부분은 대부분 SP 나 직접적인 SQL 구문으로 처리가 가능합니다.
Trigger 가 좀 느려요.
윗 부분에서 Trigger 의 사용 목적은 Insert 시 자동증가 값을 주려는 것 같은데요.
Insert 구문에 직접 기술하는 것으로 대치가 가능합니다.
뭐 참고만 하세요.
강요할 수는 없는 것이니까요.
혼이 살아 있을까.... 대한민국.
|