blog.pauloasilva.com

Tag Archives: mysql

Virtual Hosts – MAMP

Para quem recorre ao MAMP como ambiente de desenvolvimento e pretende configurar Virtual Hosts aqui fica um How To em dois passos.

  1. Editar o ficheiro /Applications/MAMP/conf/apache/httpd.conf com um qualquer editor de texto (ex. Vim), acrescentando no final a seguinte entrada:
    NameVirtualHost 127.0.0.1
    <VirtualHost 127.0.0.1>
    	DocumentRoot "/Applications/MAMP/htdocs/site1/"
    	ServerName site1.dev
    </VirtualHost>
    <VirtualHost *>
    	DocumentRoot "/Applications/MAMP/htdocs/"
    	ServerName localhost
    </VirtualHost>
  2. Editar o ficheiro /etc/hosts(na raiz do sistema) com um qualquer editor de texto (ex. Vim), acrescentando a entrada ‘site1′ como abaixo:
    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1       localhost site1.dev
    255.255.255.255 broadcasthost
    ::1             localhost
  3. Não há duas sem três: reinicie o MAMP (Stop Servers > Start Servers ou Quit)

Para testar, coloque um ficheiro em /Applications/MAMP/htdocs/site1/ e aceda a www.site1.dev a partir do seu browser.
Senão alterou a porta na qual o MAMP (na verdade o Apache que vem com este) está a servir, então deverá aceder através de www.site1.dev:8888

A escolha do TLD é opcional, tendo optador por .dev para projectos em desenvolvimento.

MySQL Triggers

Trigger, do inglês “gatilho”, é o nome dado a procedimentos armazenados numa base de dados e activados por eventos específicos numa tabela. No conhecido SGBD MySQL (agora da Sun) foram introduzidos na versão 5.0.2.

Toda a documentação relativa ao uso de Triggers poderá ser consultada no site do MySQL, devendo dedicar-se especial atenção à Secção D.1. “Restrictions on Stored Routines, Triggers, and Events” relativa às restrições a que estes estão sujeitos.

Estas linhas devem-se ao tempo que perdi ao tentar justificar o erro: “Not allowed to return a result set from a trigger“.
À semelhança dos procedimentos, qualquer operação de extracção de informação, entre outras (ver restrições), tem obrigatoriamente de ser feita para variáveis definidas pelo utilizador (incluo nestas a possibilidade de os dados serem enviados para ficheiro).

Estando agora consciente destas restrições deixo um exemplo para aqueles que depararem com esta limitação:

1
2
3
4
5
6
CREATE TRIGGER teste AFTER INSERT ON tabela
FOR EACH ROW
BEGIN
SET @newID;
SELECT @newID:=NEW.id;
END;

Embora o valor de NEW.id seja armazenado na variável previamente definida, o resultado da execução do trigger será um set com o elemento @newID.
A fórmula de sucesso segue abaixo:

1
2
3
4
5
6
CREATE TRIGGER teste AFTER INSERT ON tabela
FOR EACH ROW
BEGIN
SET @newID;
SELECT NEW.id INTO @newID;
END;