2016-09-15 9 views
0

私は、さまざまな個人情報を取り込んで、テニュアを確保する形で保存しているデータベースをコーディングしています。WHEN句の「そのような列はありません」

ジェンダー列を入力するためにデータベースに入力された南アフリカのID番号を使用しようとしています(ID番号の7番目の数字は性別を示し、0-4は女性を示し、5-9は男性を示します)

私はSUBSTR関数を使用して7番目の文字を分離しようとしましたが、WHENステートメントの一部としてこの文字列を使用しようとしたときに発生するジェンダー列の作成を実行するトリガーを実行しますID番号の列に値が挿入されると、エラーが発生します。次のように

コードは次のとおりです。

CREATE TABLE Community_Register (ID_Number TEXT CHECK (length(ID_Number)=13)) 

CREATE TABLE Occupant (ID_Number TEXT, Birth_Date TEXT, Gender TEXT) 

CREATE TRIGGER insert_details AFTER INSERT ON Community_Register 
WHEN ((substr(ID_Number,7,1)) = '5') 
BEGIN 
INSERT INTO Occupant (ID_Number, Birth_Date, Gender) 
VALUES (NEW.ID_Number, substr(NEW.ID_Number,1,6), 'Male'); 
END; 

私はBirth_Dateの列を埋めるためのWHEN文でなく、このトリガーを使用して、それが正常に働いていました。この問題は、WHENのステートメントにあるようです。

私は、コマンドラインでのコーディングと私はこのようなCommunity_Registerテーブルに値を挿入しようとすると、それは私がトリガーを入力することができますが、:

INSERT INTO Community_Register(ID_Number) VALUES ('9512235193083'); 

私はこのエラーを取得する:

no such column: ID_Number

答えて

0

UPDATEトリガーでは、プレフィックスとしてOLD.NEW.を使用して、古い行と新しい行の内容を区別する必要があります。 INSERTトリガーで

は、何の古い行はありませんが、あなたはまだNEW.を使用する必要があります。

CREATE TRIGGER ... 
WHEN substr(NEW.ID_Number, 7, 1) BETWEEN '5' AND '9' 
BEGIN 
... 
関連する問題