2014-07-01 97 views
0

任何人都可以幫助我。我在firebird中創建了一個觸發器。我有這條線使用串聯。火鳥觸發字符串連接

NEW.FIELDNAME = FIELD1 || FIELD2; 

但它不工作,沒有記錄被插入。字符串連接有什麼辦法嗎?提前致謝!

這裏是我的全部觸發

*查詢初始化變量PREV_STATUS:

SELECT FIRST 1 PREV_STATUSPERMINS FROM C3_EQUIPTSTATEPERMIN 
    WHERE TESTERID = NEW.TESTERID ORDER BY DATEMODIFIED DESC INTO :PREV_STATUS; 


IF(PREV_STATUS IS NULL) THEN 
    BEGIN 
    NEW.PREV_STATUSPERMINS = '000'; 
    END 
ELSE 
    BEGIN 
    NEW.PREV_STATUSPERMINS = PREV_STATUS || NEW.STATUS; 
    END 
+0

雖然我認爲[答話jonneve(http://stackoverflow.com/a/24503878/466862)就足夠了,請你包括完整的觸發代碼(或者至少是觸發器頭)以及「FIELD1」和「FIELD2」的原點及其值。 –

+0

它是什麼類型的觸發器?您未在編輯中包含觸發器標題。順便說一下:在哪個表上定義了觸發器?如果它是'C3_EQUIPTSTATEPERMIN',那麼你不應該在觸發器中選擇它,而是使用'OLD'上下文變量來代替 –

回答

2

你應該使用「new」關鍵字來觸發內訪問您的字段的值:

new.fieldname = new.field1 || new.field2; 

另外,不要忘記,如果任何一個字段爲空,則連接將爲空。如果你想避免這種情況,你可以做這樣的事情:

NEW.FIELDNAME = coalesce(new.FIELD1, '') || coalesce(new.FIELD2, '') 
+0

謝謝你的回答。我會先試試這個。 – aiipee

+0

哦,對不起。我已經包括了'NEW'這個詞。請參閱我的更新 – aiipee

+1

在上面的代碼中,new.status字段可能很空,在這種情況下,它會導致NEW.PREV_STATUSPERMINS也爲null。 – jonneve