2016-08-22 2 views
0

Oracle 11g에서 자동 증가 트리거를 생성 할 때 문제가 있습니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있다면 정말 감사 할 것입니다. 트리거Oracle 자동 증가 트리거 문제

CREATE SEQUENCE SPSS_QUOTE_LINE_ITEMS_SEQ start with 1 
increment by 1 
minvalue 1; 

스크립트 :

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT 
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS 
FOR EACH ROW 

BEGIN 
SELECT SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL 
INTO :new.line_num 
FROM dual; 
END; 

내가 점점 오전 오류 : [코드 : 900, SQL 상태 : 42000] ORA-00900 : 유효하지 않은 SQL 순서에 대한 나의 스크립트는 이것이다 성명서

고마워요.

+2

아마도 같은 문제 일 수 있습니다 : http://stackoverflow.com/questions/29450495/autoincrement-in-oracle-with-seq-and-trigger-invalid-sql-statement – Codo

+0

어떤 클라이언트를 사용하고 있습니까? – sstan

+0

왜 간단히': new.line_num : = SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL; 대신'select ... from dual;' –

답변

0

아래로 트리거를 수정하려면이 일을 올바른 방법 : 내가 당신의 방법을 따르는 경우 또는 다음 당신은 일반적으로 사용하는 트리거의 용어를 사용

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT 
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS 
FOR EACH ROW 
declare 
var number; 

BEGIN 

SELECT SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL 
INTO var 
FROM dual; 

:new.line_num :=var; 

END; 

같이 간다

CREATE OR REPLACE TRIGGER SPSSQUOTELINEITEMS_ON_INSERT 
BEFORE INSERT ON SPSS_QUOTE_LINE_ITEMS 
FOR EACH ROW 
BEGIN 

:new.line_num := SPSS_QUOTE_LINE_ITEMS_SEQ.NEXTVAL; 
--No need to write any Select Into statement here. 
END; 

: old는 열의 이전 값을 참조하고 new는 새 값을 참조합니다.

+0

답장을 보내 주셔서 감사합니다. – John

관련 문제