Abortando a execução de uma trigger

Olá, após algum tempo estamos novamente iniciando as atividades.
volta  e as aulas dia 18/02 e muito serviço para o ano de 2013.😀

nosso tema de hoje é a função raise_application_error() que alguns bancos de dados possuem para abortar e  retorna a mensagme e o  codigo  erro em uma validação, o problema é que o MySQL não implementa esse comando ate a atual versão, então como fazer o banco parar a execução do comando sql? a resposta é SIGNAL

a insctrução SIGNAL  nos permite parar a execução e enviar uma mensagem de erro para o manipulador da instrução do MySQL. Além disso, oferece controle sobre as características do erro (número do erro, SQLSTATE valor, mensagem).

abaixo está a documentação retiada da pagina do do mysql

Sintaxe: SIGNAL

http://dev.mysql.com/doc/refman/5.5/en/signal.html

SIGNAL condition_value
    [SET signal_information_item
    [, signal_information_item] ...]

condition_value:
    SQLSTATE [VALUE] sqlstate_value
  | condition_name

signal_information_item:
    condition_information_item_name = simple_value_specification

condition_information_item_name:
    CLASS_ORIGIN
  | SUBCLASS_ORIGIN
  | MESSAGE_TEXT
  | MYSQL_ERRNO
  | CONSTRAINT_CATALOG
  | CONSTRAINT_SCHEMA
  | CONSTRAINT_NAME
  | CATALOG_NAME
  | SCHEMA_NAME
  | TABLE_NAME
  | COLUMN_NAME
  | CURSOR_NAME

o exemplo abaixo nos  mostra como usar o signal para para a execução de uma trigger em uma deterninada condição antes da inserção de um novo registro.

CREATE
DEFINER = ‘root’@’%’
TRIGGER banco_dados.bi_ususario
BEFORE INSERT
ON onix.usuario
FOR EACH ROW
BEGIN
DECLARE msg VARCHAR(255);

IF (NEW.ativo IN  (‘Sim’,’Não’) THEN
SET msg = ‘O campo ativo da tabela usuário somente aceita valores Sim ou Não’;
SIGNAL SQLSTATE ‘45000’ SET MESSAGE_TEXT = msg;
END IF;
END

espero que essa informação lhe seja útil assim como foi para mim.!

abraços e até a próxima.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s