2014-12-29 34 views
0

我有一个语言代码表。我需要一个触发器,当我在表中添加新行时,必须使用其他语言代码生成新行。例如:Mysql如何触发新值?

原始表

|| *id* || *const* || *text* || *i18n_language_codes_id* || 
|| 1 || NAV_HOME || Home || 1 || 
|| 2 || NAV_HOME || Homme || 2 || 
|| 3 || NAV_HOME || Hom || 3 || 

当我添加新行ID为4:

|| *id* || *const* || *text* || *i18n_language_codes_id* || 
    || 1 || NAV_HOME || Home || 1 || 
    || 2 || NAV_HOME || Homme || 2 || 
    || 3 || NAV_HOME || Hom || 3 || 
    || 4 || NAV_ABOUT || About || 1 || 

需要ID为5.6(同常量和文本这些新的结果,仅改变语言代码组合):

|| *id* || *const* || *text* || *i18n_language_codes_id* || 
    || 1 || NAV_HOME || Home || 1 || 
    || 2 || NAV_HOME || Homme || 2 || 
    || 3 || NAV_HOME || Hom || 3 || 
    || 4 || NAV_ABOUT || About || 1 || 
    || 5 || NAV_ABOUT || About || 2 || 
    || 6 || NAV_ABOUT || About || 3 || 

我该怎么做? 对不起,我的英语不好,谢谢你的帮助

回答

0

你不能在MySQL中用触发器做到这一点,但最重要的是你不必这样做。

假设语言代码从另一个表的到来,让我们说language_codes你可以一次预填充所有语言代码的行与一个SQL语句

INSERT INTO table1 (const, text, i18n_language_codes_id) 
SELECT 'NEW_CONST', 'New Text', i18n_language_codes_id 
    FROM language_codes 

这里是一个SQLFiddle演示