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:
DROP TRIGGER IF EXISTS `wyzwalacz`; CREATE DEFINER=`root`@`localhost` TRIGGER `move` BEFORE INSERT ON `tabela` FOR EACH ROW BEGIN UPDATE `tabela` SET `pozycja`=`pozycja`+1 WHERE (`pozycja` >= NEW.`pozycja`); 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?