alny Posted May 14, 2013 at 06:47 PM Report #507361 Posted May 14, 2013 at 06:47 PM (edited) 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 May 14, 2013 at 07:21 PM by alny
jsWizard Posted May 15, 2013 at 08:13 AM Report #507413 Posted May 15, 2013 at 08:13 AM (edited) 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 May 15, 2013 at 08:20 AM by jsWizard
brunoais Posted May 15, 2013 at 06:47 PM Report #507536 Posted May 15, 2013 at 06:47 PM @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%.
pmg Posted May 15, 2013 at 07:03 PM Report #507538 Posted May 15, 2013 at 07:03 PM @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!
brunoais Posted May 18, 2013 at 10:30 AM Report #507896 Posted May 18, 2013 at 10:30 AM 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%.
jsWizard Posted May 23, 2013 at 12:33 PM Report #508535 Posted May 23, 2013 at 12:33 PM @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 😄 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!!! 😄
brunoais Posted May 23, 2013 at 01:18 PM Report #508540 Posted May 23, 2013 at 01:18 PM (edited) 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 May 23, 2013 at 01:22 PM 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%.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now