Functions
CREATE FUNCTION sp_name ([parameter[,...]]) [RETURNS type] [characteristic ...] begin return varivel end
parameter: [ IN | OUT | INOUT ] param_name type characteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | SQL SECURITY {DEFINER | INVOKER} | COMMENT string
Functions
A clusula RETURNS pode ser especificada apenas por uma FUNCTION. usada para indicar o tipo de retorno da funo, e o corpo da funo deve conter uma instruo RETURN value.
Caractersticas
Uma funo considerada ``deterministica'' se ela sempre retorna o mesmo resultado para os mesmos parmetros de entrada, e no deterministica'' caso contrrio.
Caractersticas
A caracterstica SQL SECURITY pode ser usada para especificar se a rotina deve ser executada usando as permisses do usurio que criou a rotina, ou o usurio que a chamou
Exemplo
create function getNivelString(nivel INT) returns varchar(45) begin declare nivelString varchar(45); case nivel when 0 then nivelString = 'comum' when 1 then nivelString = 'colaborador' when 2 then nivelString = 'moderador' when 3 then nivelString = 'administrador' else nivelString = 'comum' end; return nivelString; end
Trigger
Um TRIGGER ou gatilho um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular Tais eventos so os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE.
Triggers
Podemos definir inmeros TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima ir dispar-lo, sendo que, para cada um, podemos definir apenas um TRIGGER Os TRIGGERS podero ser disparados para trabalharem antes ou depois do evento
Desvantagens
pode apenas fornecer validao estendida, no pode substituir todas as validaes. Algumas validaes simples podem ser feitas no nvel de aplicativo. Por exemplo,voc pode validar ou verificar a entrada no lado cliente usando JavaScript ou no lado do servidor pelo script de servidor utilizando PHP ou ASP.NET. executam de forma invisvel a relao clienteservidor assim difcil descobrir o que aconteceu na camada de base de dados subjacente
Importante
No permitido chamar um stored procedure em um trigger. No permitido criar um trigger para uma view ou a tabela temporria. No permitido o uso de transaes (commit e roolback) num trigger. A declarao de retorno (return) no permitida num trigger. Criar um trigger para uma tabela da base de dados faz com que o cache de consultas seja invalidado Todos os triggers para uma tabela da base de dados deve ter nome nico.
Estrutura Trigger
CREATE [DEFINER = { USER | CURRENT_USE } ] TRIGGER trigger_name trigger_time trigger_event On tbl_name FOR EACH ROW trigger_stmt
Estrutura Trigger
DEFINER: Quando o TRIGGER for disparado, esta opo ser checada para checar com quais privilgios este ser disparado. trigger_name: define o nome do procedimento, por exemplo, trg_test; trigger_time: define se o TRIGGER ser ativado antes (BEFORE) ou depois (AFTER) do comando que o disparou; trigger_event: aqui se define qual ser o evento, INSERT, REPLACE, DELETE ou UPDATE; tbl_name: nome da tabela onde o TRIGGER ficar pendurado aguardando o trigger_event; trigger_stmt: as definies do que o TRIGGER dever fazer quando for disparado.
Exemplo Trigger
DELIMITER | CREATE TRIGGER exclui_tickets AFTER DELETE ON USUARIOS FOR EACH ROW BEGIN DELETE FROM TICKETS WHERE id_usuario = OLD.id_usuario; END| DELIMITER ;
Deletar Trigger
Drop trigger <nome_trigger>