2014-04-03 50 views
0

試圖建立一個觸發,將使用短劃線分割文件的文件名,然後插入那些2個條目爲2個單獨的字段觸發各執破折號

即文件名可能是12345-67890,我需要12345去1場和67890在另一個領域 - 條目沒有任何特定的長度,所以它可以永遠是不同的,但我有這個想法,但它不是工作

DELIMITER // 
    CREATE TRIGGER triggername 
    BEFORE INSERT ON triggername.tablename 
    FOR EACH ROW 
    BEGIN 
    /* Move the value from one column to another */ 
    SET NEW.DOCID = NEW.DOCID; 
    /* Check a text field with IF statement */ 

    SPLIT_STR(filename, '-', 1) as ponum, 
    SPLIT_STR(filename, '-', 2) as invoicenum 
    END IF; 
    END; 
    // 

回答

0

我推薦的一個選項是使用common_schema,具體功能是get_num_tokens()split_token(),這會有所幫助。

在這裏,你可以爲你的解決方案適應使用一個簡單的例子:

... 
SET `_filename` := NEW.`filename`, `_delimiter` := '-'; 
IF (`common_schema`.`get_num_tokens`(`_filename`, `_delimiter`) = 2) THEN 
    SET `ponum` := `common_schema`.`split_token`(`_filename`, `_delimiter`, 1); 
    SET `invoicenum` := `common_schema`.`split_token`(`_filename`, `_delimiter`, 2); 
END IF; 
...