Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo Tristão

Novato no MySQL solicita !!!

Recommended Posts

Olá a todos!Estou modificando meu site que hoje está todo em html para PHP/MySQL mas estou encontrando algumas dificuldades. Será que alguém pode me dar uma ajudinha.1. Eu insiro algumas informações diretamente do PHPMyAdmin. Tem como eu configurar um campo para receber a data e a hora em que o registro sofreu a última atualização?2. Como faço um SELECT para receber TODOS os registros onde um determinado campo tenha como 1º caracter um número?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamo lah1 - eu faço assim:campos: data_atualizacao, hora_atualizacaoscript (php no caso): $data_atualizacao = date("dm");$hora_atualizacao = date("Hi");nos campos eu deixo como char, pra se precisar ordenar pela data ou hora.2 - instrução SQL:"SELECT campo FROM tabela WHERE campo LIKE '1%'";o 1% eh o responsavel por selecionar os campos que começam com 1. aih você muda conforme a necessidade eh isso=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Gostaria que fosse uma propiedade do campo. Haverá a necessidade de inserir dados diretamente do MyPHPAdmin e não de uma página desenvolvida por mim!2. Isso eu consigo. Gostaria que o select retorna-se de uma só vez todos os registros iniciados de 0 a 9.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Pro caso 2:

SELECT *

FROM tabela

WHERE MID(NOME_DO_CAMPO,1,1) REGEXP '[0-9]'

Neste caso o MySQL seleciona o primeiro caracter do campo e utiliza a expressão regular REGEXP para verificar se é numérico, ou seja se está na faixa de 0 a 9.

beleza?

 

Pro primeiro caso vou verificar se Trigger pode te ajudar.

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

:)

Bom, Trigger ajuda, mas só estão disponíveis a partir da versão 5 do MySQL.

E você deve precisar do privilégio Super, caso não esteja utilizando o usuário root ou se estiver verifica se tem este privilégio. :P

Bom, o exemplo:

DELIMITER $$;

 

DROP TRIGGER `atualizacao`$$

 

CREATE TRIGGER `atualizacao` BEFORE UPDATE on `teste2`

FOR EACH ROW BEGIN

SET NEW.DATA = CURRENT_DATE(); #Definir a data atual do sistema para o registro alterado

SET NEW.HORA = CURRENT_TIME(); #Definir a hora atual do sistema para o registro alterado

END$$

 

DELIMITER ;$$

Repare que isto foi para Update, se quiser para Insert pode fazer algo do tipo:

DELIMITER $$;

 

DROP TRIGGER `inclusao`$$

 

CREATE TRIGGER `inclusao` BEFORE INSERT on `teste2`

FOR EACH ROW BEGIN

SET NEW.DATA = CURRENT_DATE(); #Definir a data atual do sistema para o registro alterado

SET NEW.HORA = CURRENT_TIME(); #Definir a hora atual do sistema para o registro alterado

END$$

 

DELIMITER ;$$

DATA e HORA são os nomes do campo que utilize p/ teste que são da tabela utilizada, que no caso é 'teste2', beleza?

 

Neste caso, mesmo que no Insert seja especificado valor para estes campos, o MySQL fará a atualização de acordo com o que for especificado na Trigger.

 

A sintax para criar:

CREATE TRIGGER <nome da trigger>

{ BEFORE | AFTER } //antes ou depois da operação, de acordo com a próxima situação

{ INSERT | UPDATE | DELETE } //quando é efetuada a inclusão, atualização ou ao remover o registro

ON <nome da tabela>

FOR EACH ROW

<Comandos SQL>

Fonte: Manual do MySQL

 

Qualquer dúvida... posta ae!

:]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, cassitos!

Obrigado pela força http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

A 1ª funciona perfeitamente.

 

A 2ª esbarra na minha ignorância. Não sei como usar isso! Olhe o que eu fiz:

 

Já tenho a tabela criada e com dados inseridos.

 

CREATE TABLE `teste` (  `id` tinyint(4) NOT NULL auto_increment,  `nome` varchar(40) NOT NULL default '',  `data` date NOT NULL default '0000-00-00',  `hora` time NOT NULL default '00:00:00',  PRIMARY KEY  (`id`)) TYPE=MyISAM AUTO_INCREMENT=8;

Depois digitei na janela de SQL:

 

DELIMITER $$;DROP TRIGGER `inclusao`$$CREATE TRIGGER `inclusao` BEFORE INSERT on `teste`FOR EACH ROW BEGINSET NEW.data = CURRENT_DATE(); #Definir a data atual do sistema para o registro alteradoSET NEW.hora= CURRENT_TIME(); #Definir a hora atual do sistema para o registro alteradoEND$$DELIMITER;$$

Deu erro no DELIMITER!

 

Tem como eu saber a versão do MySQL. Acho que é a 5 pois quando clico na ajuda vai para o manual do 5.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!O comando p/ saber a versão:

SELECT VERSION()

Agora o problema p/ criar Trigger, p/ dizer a verdade não consegui até hoje cria-las pelo PhpMyAdmin, nem Trigger nem Stored Procedures.Talvez seja alguma configuração que esteja faltando ou simplesmente não há suporte.Mas, utilizo o SQLYog (versão Free) para diversas operações, se for possível tenta baixa-lo ou se tiver outro programa p/ acessar o MySQL tente por este.Criei a tabela e executei o script da Trigger (no SQLYog) e funcionou perfeitamente! :)

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.