Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com um TRIGGER Mysql.


thiagito

Pergunta

Olá pessoal, este código MYSQL tem a seguinte função,

pegar uma tabela chamada employee que possui os seguintes campos: [supervisor_id int, employee_id int, full_name varchar] e apartir desta tabela, gerar uma outra tabela employee_closure que possui os seguintes campos: [supervisor_id int, employee_id int, distance int] mostrando o relacionamento entre supervisores e empregados.

É mais ou menos assim:

Tabela Employee

tab1.png

A tabela employee ela tem que estar populada com alguns valores, no exemplo acima coloquei alguns

Tabela que deve ser gerada com o código que estou tendo problema, esta tabela tem que estar em branco, mas o código quando for execultado vai popular a tabela da seguinte maneira:

Employee_closure

----------------------------------------------

| supervisor_id | employ_id | distance |

----------------------------------------------

| 1 | 1 | 0 |

| 1 | 2 | 1 |

| 1 | 3 | 2 |

| 1 | 4 | 1 |

| 1 | 5 | 3 |

| 1 | 6 | 2 |

| 2 | 2 | 0 |

| 2 | 3 | 1 |

| 2 | 5 | 2 |

| 2 | 6 | 1 |

| 3 | 3 | 0 |

| 3 | 5 | 1 |

| 4 | 4 | 0 |

| 5 | 5 | 0 |

| 6 | 6 | 0 |

----------------------------------------------

CREATE PROCEDURE close_employee()
BEGIN
  DECLARE distance int;
  TRUNCATE TABLE employee_closure;
  SET distance = 0;

  INSERT INTO employee_closure (supervisor_id, employee_id, distance)
    SELECT employee_id, employee_id, distance
      FROM employee;


 REPEAT
    SET distance = distance + 1;
    INSERT INTO employee_closure (supervisor_id, employee_id, distance)
      SELECT employee_closure.supervisor_id, employee.employee_id, employee_closure.distance
        FROM employee_closure, employee
          WHERE employee_closure.employee_id = employee.supervisor_id
          AND employee_closure.distance = distance - 1;
  UNTIL (ROW_COUNT() == 0)
  END REPEAT
END

O erro que esta relatando é o seguinte:

>[Error] Script lines: 1-21 -------------------------

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNTIL (ROW_COUNT() == 0)

END REPEAT

END' at line 19

Warnings: --->

W (1): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNTIL (ROW_COUNT() == 0)

END REPEAT

END' at line 19

<---

[Executed: 24/10/08 14h16min35s BRT ] [Execution: 0/ms]

Agradeço desde já!

Editado por thiagito
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi 'thiagito',

Em primeiro Lugar o título está errado. Seu problema não é com um trigger. É com uma storage procedure.

Em segundo lugar, seu erro está aqui:

UNTIL (ROW_COUNT() == 0)
O correto é:
UNTIL (ROW_COUNT() = 0)

Estou alterando o título para corresponder a dúvida.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...