Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio S. Souza

trigger

Recommended Posts

Olá, bom dia.

tenho um problema que é mais ou menos assim

Um condominio com 200 pessoas um campo de futebol e uma sala de ping pong.

 

Para usar, tem ed reservar, e o sistema que desenvolveram realmente agenda, mas com um problema.

 

ele agenda varios compromissos na mesma hora.

Dai se pode imaginar 6 times de futebol, 3 bolas, 66 homens, seis cores de camisa disputando o exiguo campo.

Não dá e me pediram para eu tentar uama solução e eu pensei num trigger, que é masi ou menos assim:

 

 

 

DELIMITER &&

 

CREATE TRIGGER agenda BEFORE INSERT ON reserva_araealazer

FOR EACH ROW

BEGIN

SET @data = NEW.data;

IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin) THEN

SET 'aqui eu nao sei mais'

END IF;

END &&

 

DELIMITER ;

 

Neste ponto em que eu nao sei mais, queria devolver uma mensagem na tela para o funcionario dizendo que o horário esta ocupado por outro bando de festeiros.]Alguém pode me ajudar

eu sei que estudei isso, ms nao consigo lembrar o que é. obrigado.

 

Depois que eu postei ja vi um erro. O trigger é assim:

 

DELIMITER &&

 

CREATE TRIGGER agenda BEFORE INSERT ON reserva_araealazer

FOR EACH ROW

BEGIN

SET @data = NEW.data;

SET @hora_inicio = NEW.hora_ini;

SET @hora_fin = @NEW.hora_fin;

IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin) THEN

SET 'aqui eu nao sei mais'

END IF;

END &&

 

DELIMITER ;

 

 

Cláudio

 

Sou eu de novo, revendo erros para tentar ajudr quem pode me ajudar

 

eu tentei rodar e dei de cara com um acesso negado pq nao sou super usaer na base.

Mas isso, em tese, é um bom sinal...

 

 

DELIMITER &&

 

CREATE TRIGGER agenda BEFORE INSERT ON reserva_arealazer

FOR EACH ROW

BEGIN

SET @data = NEW.data;

SET @hora_inicio = NEW.hora_ini;

SET @hora_fin = @NEW.hora_fin;

IF ((NEWdata(@data) = data ) and (@horaIni = hora_ini) and @hora_fin = hora_fin)

THEN

SET @NEW.data = NULL;

SET @NEW.hora_ini = NULL;

SET @NEW.hora_fin = NUll;

END IF;

END &&

 

DELIMITER ;

 

Preciso sabr como devolver a resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio pra criar trigger tem que ter super como privilegio.

 

Porém,

Existe um evento cadastrado da hora X até a hora Y

e você quer cadastrar um evento da hora A até a hora B

 

entao:

A não pode estar entre X e Y

B não pode estar entre X e Y

X não pode estar entre A e B

Y não pode estar entre A e B

 

ou seja, eh bastante facil de implementar via programaçao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu peguei a madrugada e fiz alguma coisa.

deu nisso aqui, mas estou sem acesso à aplicação para testar

submeto aos que sabem muito mais que eu, que nao sei nada, para avaliar se a logica esta correta.

é um evento OnBeforUpdate

 

desde já obrigado

 

 

/**
* Check for an existing record
*/

// SQL statement parameters
$check_table = 'reserva_arealazer', 'data' , 'hora_inicio', 'hora_fin';    // Table name
$check_where = "field = 'condition'"; // Where clause

// Check for record
$check_sql = 'SELECT *'
  . ' FROM '  . $check_table
  . ' WHERE ' . $check_where;
sc_select(dataset, $check_sql);

if (false == {dataset})
{
   // Error while accessing database
}
elseif ({dataset}->EOF)
{
   // No record found
}
else
{
//nada aqui. a inserção vai acontecer
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.