2014-10-08 12 views
0

두 개의 테이블이 있습니다. 하나는 공제이고 다른 하나는 공제입니다. idDeductions는 Deductions의 핵심 필드이며 deductTrans의 외래 키입니다. deductTrans가 삽입 될 때 자동으로 공제 할 작업이 몇 가지 있습니다. 컴파일 할 방아쇠가 있습니다. 나는 레코드를 삽입 할 때SQLite 트리거에서 필드를 찾을 수 없습니다.

CREATE TRIGGER trig_DeductTrans AFTER INSERT ON DeductTrans 
    BEGIN 
     UPDATE Deductions 
    SET remainingCt = remainingCT - 1 
    WHERE 
     idDeductions = New.idDeductions ; 
    END; 

, 나는 다음과 같은 오류가 나타날 : 나는 손실에있어

"idDeductions으로 이러한 열을". Deductions.idDeductions = New.idDeductions로 변경하려고 시도했지만 도움이되지 않습니다. 어떤 아이디어?

+0

두 테이블의 정의를 보여줍니다. –

답변

0

SQLite는 Deductions 테이블에 'idDeductions'라는 열이 없다고 주장합니다. 당신은 우리에게 확인 수단을주지 않았지만, 그것이 옳은 것 같습니다. 나는 당신의 방아쇠가 다른 테이블 (DeductTrans)에 있다는 것을 관찰합니다. 분명히 당신은 또한 열 idDeductions을 가질 것으로 기대합니다.

대부분 Deductions의 해당 열의 이름이 다르게 지정됩니다. 예를 들어, 아마도 그것은 단지 id으로 명명됩니다.

+0

그랬 으면 좋겠다. CREATE TABLE "Deductions"( "idDeductions"TEXT NOT NULL, .... – Gary

+0

이렇게 다르게 명명 된 컬럼을 가진'DeductTrans' 일 수 있습니까? 또는 야생 추측으로,이 트리거가 실패 할 때'DeductTrans.idDeductions'에 명시 적 값을 삽입하지 않을 가능성이 있습니까? (그렇지 않으면 소프트웨어가 버그가 있다는 것에 의심 스럽습니다.) –

0

확인. 기괴한. 나는 이것을 Navicat Premium에서 테스트했습니다. 혐오감에서 방아쇠를 지키고, 프로그램을 닫고, 점심 먹으러 갔다. 돌아와서 다시 시도해 볼 거라 생각 했어. 매력처럼 일했습니다. 내게서 우리를 잡아라!

관련 문제