2017-02-02 3 views
-1

Я пробовал несколько предложений из stackoverflow, но я постоянно сталкиваюсь с ошибками.Добавление двух столбцов и сохранение в третьем столбце в mysql

Что у меня есть таблица: тест

У меня есть 3 колонки:

first (varchar) 
last (varchar) 
first_last (varchar) 

То, что я хочу сделать, это создать триггер, поэтому, когда я вхожу в первый и последний, и сохранить его , значение first_last вычисляется и сохраняется. Вот что у меня сейчас:

Trigger name: update_first_last 
Table: test 
Time: AFTER 
Event: INSERT 
Definition: UPDATE test SET test.first_last=CONCAT(test.first, test.last) 

Ошибка я получаю:

#1442 - Can't update table 'test' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 
+5

Не делайте этого. просто конкатенируйте 'first' и' last' всякий раз, когда вы хотите увидеть полное имя – RiggsFolly

+0

Просьба привести примеры того, что вы пробовали, и ошибки, которые вы получили. – jwatkins

+0

Почему это плохая идея? Я понимаю, что могу конкатенатировать позже, но что означает запуск сценария, и я хочу, чтобы эффект был мгновенным. – EastsideDeveloper

ответ

1

Как оператор вставки и триггер хочет изменить всю таблицу, в которой не допускаются. Вы можете сделать что-то вроде этого, вместо:

CREATE TRIGGER update_first_last 
BEFORE INSERT 
ON test 
FOR EACH ROW 
SET NEW.first_last=CONCAT(NEW.first, NEW.last) 

Если столбцы первого и последнего не определяется как NOT NULL, то вы должны создать подобный триггер для UPDATE действий.

+0

Я получаю следующее сообщение об ошибке: # 1362 - Обновление новой строки не разрешено после триггера – EastsideDeveloper

+0

Правильно, я изменил команду - должен быть ДО ВСТАВКИ. –

+0

Да, это работает – EastsideDeveloper

Смежные вопросы