Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

alny

triggers

Mensagens Recomendadas

alny

boa tarde

estou com duas duvida em relação ao triggers. Eu tenho um campo da base de dados que é a data disponibilização

que não pode ser inferior ao dia de hoje, eu já tive a ler alguma informação mas não percebi o que fazer.

A minha outra duvida é passando um dado tempo a partir da data disponibilização um dado campo tem de ser alterado de 1 para 0.

Alguém me pode ajudar?

USE `alnytrabalhophppaw`;
DELIMITER $$
CREATE TRIGGER `teste_AINS` AFTER INSERT ON teste FOR EACH ROW
-- Edit trigger body code below this line. Do not edit lines above this one
begin
SET @dataD=NEW.dataDD;
IF(CURRENT_DATE()<@dataD)
THEN
SET NEW.dataD=null;
end IF;
end

Editado por alny

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jsWizard

Ora, no primeiro caso é muito simples, só precisas de criar uma check constraint nessa coluna: "coluna >= now" algo assim. não precisas de trigger nenhum.

http://dev.mysql.com/doc/refman/5.6/en/create-table.html

(procura por CHECK)

No segundo caso, penso que o melhor a fazer é o seguinte:

1) desenvolver um procedimento que faz o tal update de que falas;

2) criar um JOB que executa esse procedimento de tempos em tempos, por exemplo, uma vez por dia durante a noite.

Aparentemente um JOB é MySQL é um evento.. parece-me um nome estranho, mas seja como for, tens de procurar por: "MySQL CREATE EVENT" para encontrar info sobre JOBS em MySQL.

http://dev.mysql.com/doc/refman/5.1/en/create-event.html

Mais um vez, um trigger não é o mais indicado nesta situação porque os triggers são executados quando algo acontece à tabela (insert, update, delete) e neste caso, pelo que percebi, mesmo que a tabela não sofra alterações, tu queres que passado X tempo o tal campo seja actualizado. Por isso, penso que trigger está fora de questão.

Inté!

Editado por jsWizard

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

@jsWizard

O MySQL não tem cosntraints. É preciso usar triggers para fazer o trabalho das constraints


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

@thoga

O MySQL não tem cosntraints.

Nao é bem assim: http://dev.mysql.com/doc/refman/5.7/en/constraints.html

Até a versao 4.1 era como dizes.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

OK, escrevi mal:

O MySQL não tem constraints de valor. Por exemplo, forçar que um certo valor esteja dentro de um certo intervalo (como obrigar que um int esteja entre 0 e 15). Terias que usar um SET para isso e definir todas as hipóteses.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jsWizard

@jsWizard

O MySQL não tem cosntraints. É preciso usar triggers para fazer o trabalho das constraints

WTF? o MySQL não tem check constraints?? a sério.. humm.. se calhar é por isso que nunca usei MySQL :D

exemplo: isto não funciona em MySQL 5.6 ?

CREATE TABLE Order (
OrderNum	INTEGER,
OrderTime	TIMESTAMP,
ProdNum		INTEGER,
Quantity	INTEGER,
PRIMARY KEY (OrderNum),
FOREIGN KEY (ProdNum) references Product(ProdNum),
	CHECK(Quantity >= 1 AND Quantity <= 1000));

http://oak.cs.ucla.edu/cs143/project/mysql/constraints.html

Unfortunately, check constraints are not supported in MySQL nor are general SQL assertions.

HOLY COW!!! :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Para isso usa-se triggers. É um pouco mais lento mas serve, por enquanto, enquanto n meterem disso no MySQL.

De qq modo, nunca precisei deles... Se calhar é por isso que nunca se deram ao trabalho de fazer esses checks.

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.