Jump to content
alny

triggers

Recommended Posts

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

Edited by alny

Share this post


Link to post
Share on other 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é!

Edited by jsWizard

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Edited by 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%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.