@TravushkaMuravushka

Почему выдает ошибку 1093 You can't specify target table 'table' for update in FROM clause?

Здравствуйте, пытаюсь написать триггер формирование строки из двух других строк. Пробовала вариант, который закоменчен, но в итоге вылезала ошибка, как я поняла которую я не смогу починить(чтобы писать так update, нужно везде прописывать new, что невозможно для переменной sm(если вообще в этом проблема)).
Решила переписать и в итоге все равно выходит ошибка 1093. Прошу помощи! Как вообще можно написать такой триггер или исправить ошибку?
Заранее спасибо!

DELIMITER //
  CREATE TRIGGER TerrNamee_Trigger
	AFTER insert ON PlaceToKeep
   FOR EACH ROW BEGIN 
  # DECLARE s1 varchar(100);
   #DECLARE s2 varchar(100);
   #DECLARE sm varchar(100);
   #SET s1 =(select NEW.Kind from PlaceToKeep);
  # SET s2 =(select NEW.Age from PlaceToKeep); 
   #SET sm= (select CONCAT(s1, s2));
   #UPDATE PlaceToKeep set NEW.InscriptionTerrarium= sm;
   UPDATE PlaceToKeep set NEW.InscriptionTerrarium= (SELECT CONCAT((SELECT NEW.Kind FROM PlaceToKeep), (SELECT NEW.Age FROM PlaceToKeep)));
   END //


Таблица с которой работаем:

CREATE TABLE PlaceToKeep
(
PlaceToKeep_Id INT PRIMARY KEY AUTO_INCREMENT,
PlaceToKeep_Id_1 INT,
Kind VARCHAR(20) NOT NULL,
Age VARCHAR(20) NOT NULL, 
ConditionsOfDetention VARCHAR(20) NOT NULL,
InscriptionTerrarium VARCHAR(20) NOT NULL,
Animal VARCHAR(20) NOT NULL,
SizeAnimal INT, 
StatussTerrariumFree INT,
FOREIGN KEY (PlaceToKeep_Id_1) REFERENCES Animals (Animals_Id)
);
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
вам не before insert триггер ли нужен?
Перед вставкой и определите новое поле

spoiler

а не так часом?

UPDATE PlaceToKeep set NEW.InscriptionTerrarium=CONCAT(NEW.Kind, NEW.Age);

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы