DUVIDA Trigger BD

3 respostas
viniciusfaleiro

Galera… Preciso montar um esquema para sincronização com banco de dados do SAP pra duas tabelas. Porém, minha dúvida é a seguinte. vejam a imagem

Na tabela schedule_sync eu guardo um agendamento de sincronização, ou seja, aqui eu digo de quanto em quanto tempo o banco será sincronizado. Esse tempo é de acordo com o ciclo (que tem uma repetição e uma duração). Minha dúvida é a seguinte: Como eu faria uma trigger ou sei lá o que pra quando eu inserisse um novo agendamento ele criasse todos os agendamentos na tabela SYNCS…

Por exemplo… Se eu inserisse um novo agendamento com data de inicio 01.01.2001 com repeticao diaria durante 1 mes ele geraria 30 sincronizações diferentes na tabela sync uma para cada dia a contar do dia 01.01.2001. Tem como fazer isso direto no banco ou tem que ser com o java mesmo???

Estou usando Mysql 4.

3 Respostas

viniciusfaleiro

to vendo q ta fraco o negocio aqui… bem… eu fiz o seguinte

DELIMITER $$
DROP PROCEDURE IF EXISTS genSync$$
CREATE PROCEDURE genSync(
IN id_ciclo VARCHAR(255),
IN mdt VARCHAR(255),
IN user VARCHAR(255),
IN senha VARCHAR(255),
IN ip varchar(255),
IN id_sys VARCHAR(255),
IN idioma VARCHAR(225),
IN dt_ini VARCHAR(255),
IN hora_ini VARCHAR(255),
IN id_ciclo VARCHAR(255),
IN rfc VARCHAR(255),
IN sap_tab VARCHAR(255),
IN intern_tab VARCHAR(255)
)

BEGIN
DECLARE durac INT DEFAULT 0
DECLARE repet INT DEFAULT 0
DECLARE count INT DEFAULT 0
DECLARE ins_data VARCHAR(255)
DECLARE sch_id VARCHAR(255);

SET ins_data = ' ';

SELECT dias 
INTO repet
FROM ciclo c, repeticao r
WHERE c.repeticao_id = r.id
AND c.id = id_ciclo;

SELECT dias 
INTO durac
FROM ciclo c, duracao d
WHERE c.duracao_id = d.id
AND c.id = id_ciclo;

INSERT INTO SCHEDULE_SYNC
(ciclo_id,data,hora,mandante,user,pass,idioma,ip,system)
VALUES 
(id_ciclo,dt_ini,hora_ini,mdt,user,senha,idioma,ip,id_sys);

SELECT last_insert_id
INTO sch_id;

WHILE count <= (durac / repet) DO

SELECT DATE_ADD(data, INTERVAL repet DAY)
INTO ins_data
FROM SCHEDULE_SYNC
WHERE DATA = dt_ini
AND HORA = hora_ini;


INSERT INTO SYNCS (insdata,sch_id);
VALUES


END WHILE

END$$
DELIMITER;

Más ta dando erro… :

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 ‘PROCEDURE genSync(
IN id_ciclo VARCHAR(255),
IN mdt VARCHAR(255),
IN user VAR’ at line 1

C

viniciusfaleiro:
to vendo q ta fraco o negocio aqui… bem… eu fiz o seguinte

Bem, ninguém aqui é pago pelo GUJ para responder perguntas.
E outra coisa: coloque o bloco da sua procedure dentro da tag code, por favor

viniciusfaleiro

Não fiz por mal… Também não to pedindo pra ng responder na hora… é que sempre que coloquei a galera respondia rápido…

Criado 7 de agosto de 2009
Ultima resposta 7 de ago. de 2009
Respostas 3
Participantes 2