Witam.

Czy aktualizacja danych przed ich dodaniem jest w ogóle możliwa?
Przy próbie takiej operacji, otrzymuję komunikat: "#1442 - Can't update table 'forum_categories' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.".

Mam następujący problem. Posiadam tabelę, która załóżmy zawiera elementy menu. Składa się z identyfikatora, nazwy i pozycji. W owej tabeli miałbym np. 5 wierszy, z których kolejno id i pozycja rosłaby od 1 do 5. I teraz chciałbym dodać nowy element owego menu, którego pozycja w stosie byłaby równa 3. I tutaj pojawia się problem, gdyż wtedy 2 elementy są na tej samej pozycji. A ja chciałbym, aby pozycja reszty elementów (większych lub równych 3) automatycznie wzrosła o 1.

Mój wyzwalacz wyglądałby następująco:
  1. DROP TRIGGER IF EXISTS `wyzwalacz`;
  2. CREATE DEFINER=`root`@`localhost` TRIGGER `move` BEFORE INSERT ON `tabela`
  3. FOR EACH ROW BEGIN
  4. UPDATE `tabela` SET `pozycja`=`pozycja`+1 WHERE (`pozycja` >= NEW.`pozycja`);
  5. END


Jest na to jakiś sposób poprzez wyzwalacz, czy jestem zmuszony wstawiać te elementy poprzez procedurę, gdzie wykonałbym UPDATE pozycji a następnie wykonał INSERT?