Ir para conteúdo

POWERED BY:

Arquivado

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

erison

[Resolvido] erro trigeer mysql

Recommended Posts

DROP TABLE IF EXISTS `teste01`;

CREATE TABLE `teste01` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `valor` decimal(11,2),
 `qtd` decimal(11,1),
 `valor_total` decimal(11,2),
 PRIMARY KEY(`id`)
)
ENGINE=MYISAM
ROW_FORMAT=default;

DROP TRIGGER IF EXISTS `valor_total`;



DELIMITER |
CREATE TRIGGER `valor_total` BEFORE UPDATE
ON `teste01` FOR EACH ROW
BEGIN
 New.valor_total = (New.valor * New.qtd);
END; |
DELIMITER ;

 

não to conseguindo criar esta trigger.

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo,

 

Faltou um SET:

 

DELIMITER |
CREATE TRIGGER `valor_total` BEFORE UPDATE
ON `teste01` FOR EACH ROW
BEGIN
 SET New.valor_total = (New.valor * New.qtd);
END; |
DELIMITER ;

Espero que resolva, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda não deu certo :s

Eu executei desta forma aqui:

 

USE banco;

DROP TABLE IF EXISTS `teste01`;

CREATE TABLE `teste01` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `valor` decimal(11,2),
 `qtd` decimal(11,1),
 `valor_total` decimal(11,2),
 PRIMARY KEY(`id`)
)
ENGINE=MYISAM
ROW_FORMAT=default;

DROP TRIGGER IF EXISTS `valor_total`;

DELIMITER |

CREATE TRIGGER `valor_total` BEFORE UPDATE
ON `teste01` FOR EACH ROW
BEGIN
 SET New.valor_total = (New.valor * New.qtd);
END; |
DELIMITER ;

E funcionou, tente colocar o USE "nome_do_seu_banco" no começo, ou acrescente ele antes do nome da tabela.

 

Outro ponto importante: Você está usando o phpMyAdmin? Se estiver veja esse tópico: http://forum.imasters.com.br/topic/473725-triggers/

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei pelo phpmyadmin e deu correto.

 

e estava tetando pelo mysql front e deu erro, sabe dizer pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei pelo phpmyadmin e deu correto.

 

e estava tetando pelo mysql front e deu erro, sabe dizer pq?

Estranho mesmo. Pelo MySQL-Front eu não tentei, usei o MySQL Workbench e deu.

 

No tópico que eu passei no post anterior era o contrário, o colega estava tentando pelo phpMyAdmin e só deu pelo MySQL-Front.

 

Enfim, ainda bem que funcionou :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho mesmo. Pelo MySQL-Front eu não tentei, usei o MySQL Workbench e deu.

 

No tópico que eu passei no post anterior era o contrário, o colega estava tentando pelo phpMyAdmin e só deu pelo MySQL-Front.

 

Enfim, ainda bem que funcionou :D

 

outra coisa

mysql-front ou Workbench;

qual eo melhor?

 

 

outra coisa, posso usa essa função em upadte e insert não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O SQL-Front é bem leve eu gosto bastante dele. O Workbench é mais completo pois você pode fazer a modelagem do banco também e com alguns cliques copia / exporta o código pronto da modelagem e cria o banco. Além de oferecer algumas ferramentas a mais pra manipulação e monitoração do servidor.

 

Ou seja, o Workbench é melhor, mas se você não tem costume de desenhar modelagens não necessita dele. Faça um teste e veja se te agrada e se prefere seguir com ele. Download.

 

Sim você pode fazer Triggers para INSERT, UPDATE e DELETE. Esse artigo é ótimo, explica bem sobre os 3 casos, as particularides de cada um e os porquês.

 

Havendo mais dúvidas fico a disposição, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O SQL-Front é bem leve eu gosto bastante dele. O Workbench é mais completo pois você pode fazer a modelagem do banco também e com alguns cliques copia / exporta o código pronto da modelagem e cria o banco. Além de oferecer algumas ferramentas a mais pra manipulação e monitoração do servidor.

 

Ou seja, o Workbench é melhor, mas se você não tem costume de desenhar modelagens não necessita dele. Faça um teste e veja se te agrada e se prefere seguir com ele. Download.

 

Sim você pode fazer Triggers para INSERT, UPDATE e DELETE. Esse artigo é ótimo, explica bem sobre os 3 casos, as particularides de cada um e os porquês.

 

Havendo mais dúvidas fico a disposição, abraço.

 

 

porque no postgree e so colocar upadte, insert

 

mas no mysql deu erro.

 

e quando vo criar la no mysql-front ele não deixa eu selecionar mais de um , ou e so update ou e so insert.

 

no caso eu tive que fazer 2 triggers mas acho que não era para ser deste modo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que seja sim. Eu pelo menos nunca fiz uma Trigger só pra INSERT e UPDATE juntos.

 

Acho que o MySQL restringe pois as Triggers de UPDATE podem contar com NEW e OLD, já as de INSERT só podem ter NEW. Sendo assim por questão de segurança o MySQL deve "renegar" essas Triggers conjuntas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sei pois cara esse topico esta resolvido muito obrigado :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

sei pois cara esse topico esta resolvido muito obrigado :D

Satisfeito em ajudar, precisando estamos ae :thumbsup:

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.