Mysql如何触发新值?

时间:2014-12-29 21:38:37

标签: mysql triggers

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

原始表

|| *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的这些新结果(相同的const和文本,只更改语言代码组合):

|| *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 ||

我该怎么做? 抱歉我的英文不好,谢谢你的帮助

1 个答案:

答案 0 :(得分: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 演示