Я считаю, что наиболее эффективный способ:
$data1 = "the color is";
$data2 = "red";
$result = $data1 . ' ' . $data2;
Если вы хотите реализовать локализацию, вы можете сделать что-то вроде этого:
$translationText = "the color is %s";
$translationRed = "red";
$result = sprintf($translationText, $translationRed);
Это немного медленнее, но он не предполагает грамматических правил.
Вы забыли изменить разделитель, поэтому MySQL считает, что ваш первый оператор таков:
CREATE TRIGGER `trg_part_upd` AFTER UPDATE ON `tbl_sub_model_eng_trans_part`
FOR EACH ROW
if NEW.engine_sk = 0 and NEW.trans_sk = 0
then
UPDATE tbl_sub_model tsm
INNER JOIN tbl_fct_sub_eng_trans tfset ON tsm.sub_model_sk = tfset.sub_model_sk
INNER JOIN tbl_sub_model_eng_trans_part tsmetp ON tfset.trans_sk = tsmetp.trans_sk
SET tsm.last_modified_date = NOW()
WHERE tsmetp.sub_model_sk=NEW.sub_model_sk;
Просто добавьте это перед кодом:
DELIMITER $$
... и это впоследствии:
$$
... поэтому MySQL может распознавать полный триггер как один оператор.
Вы можете изменить $$
по своему усмотрению.
Официальные документы содержат подробные сведения об этом в разделе Определение сохраненных программ .
Триггер - это исходный объект, у него есть тело - одно или несколько внутренних утверждений.
Попробуйте это:
DELIMITER $$
CREATE TRIGGER `trg_part_upd` AFTER UPDATE ON `tbl_sub_model_eng_trans_part`
FOR EACH ROW BEGIN
IF NEW.engine_sk = 0 AND NEW.trans_sk = 0
THEN
UPDATE tbl_sub_model tsm
INNER JOIN tbl_fct_sub_eng_trans tfset ON tsm.sub_model_sk = tfset.sub_model_sk
INNER JOIN tbl_sub_model_eng_trans_part tsmetp ON tfset.trans_sk = tsmetp.trans_sk
SET tsm.last_modified_date = NOW()
WHERE tsmetp.sub_model_sk=NEW.sub_model_sk;
END IF;
END;
$$
DELIMITER ;