2012-12-02 5 views
0

DDL 스크립트를 실패DDL 트리거 스크립트를 작성합니다 (아래 소스)이 오류와 함께 실패 트리거를 만들 수

문이 실패, SQLSTATE = 42000 동적 SQL 오류 - SQL 오류 코드 = -104 - 명령의 예기치 않은 끝 - 라인 3, 파일 C 라인 0 후 열 (44) : \ CRMDemo \ 데이터베이스 \ DDL \ Trigger_Orders.sql 문이 실패, SQLSTATE는 = 42000 동적 SQL 오류 - SQL 오류 코드 = -104 -Token 알 수 없음 - 줄 1, 열 1 -end 줄 14 번째 줄 C : \ CRMDemo \ Database \ DDL \ Trigger_Orders.sql

(줄 3, 열 44는 마치 닫는 부분으로 보일 수 있습니다.) 오류 42000 또는 -104에 관한 정보를 찾을 수 없습니다. 트리거는 존재하는 생성기의 레코드 번호를 할당하도록 설계되었습니다. 이 트리거는 동일한 스크립트의 Interbase에서 제대로 작동합니다. 내가 생각할 수있는 유일한 것은 열 크기 인 Integer가 반환 된 값에 대해 올바르지 않다는 것입니다. 그러나 설명서에 따르면 값이 잘릴 수는 있지만 예상 값 (1)에서 작동해야합니다.

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS ACTIVE BEFORE INSERT POSITION 95 AS 
begin 
    NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1); 
end; 

파이어 버드는 2.5.2 버전입니다. Windows 7. 데이터베이스는 32 비트 여야합니다.

+0

무엇 유틸리티 당신은 문을 실행하는 데 사용할 수 있습니까? –

+0

배경 정보와 마찬가지로 : SQLstate 42000은 SQL : 2003 표준에 정의 된 '구문 오류 또는 액세스 규칙 위반'이라는 매우 일반적인 오류입니다. 오류 -104는 일반적인 오류나 문법 오류와 비슷한 방화 고리입니다 (Interbase 6.0 언어 참조 (205-206 페이지)의 표 6.4에는 해당 오류 코드와 관련된 약 15 개의 오류가 나열되어 있음). '토큰 알 수 없음'(파이어 버드 오류 335544634) 메시지와 결합하면 코드에 구문 오류가 있다는 의미입니다. –

답변

2

당신이 SET 기간 사업자가 사용되었는지 걸릴 isql을 유틸리티를 사용하여 문을 실행하는 경우 :

SET TERM^; 

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS 
    ACTIVE 
    BEFORE INSERT 
    POSITION 95 
AS 
begin 
    NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1); 
end 
^ 

SET TERM ;^
+0

아마도 그 대답 일 것입니다. 내일 다시 시도하겠습니다. 나는 isql을 사용하고있다. 내 다른 DDL 스크립트가 작동했습니다. 트리거 스크립트에만 ";" sql create 문 내에서. Interbase에 익숙해 져서 Set Term을 몇 버전 전에 떨어 뜨 렸습니다. 나는 잠시 동안 내 대본에서 그들을 제거 해왔다. 나는 그들에 대해 여기 결코 생각하지 않았다. –