Ir para conteúdo

POWERED BY:

Arquivado

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

felipebmfaria

Criação de Triggers

Recommended Posts

Bom dia!

 

Estou com dúvidas na criação de triggers... sou iniciante

 

Tenho as seguintes tabelas:

 

disciplina (

id_disciplina(pk), nome)

 

turma (

id_turma(pk), matricula, id_disciplina)

id_disciplina(fk) reference disciplina (id_disciplina)

matricula(fk) REFERENCES aluno (matricula),

 

aluno (

matricula(pk), nome)

 

boletim (

matricula(pk), id_disciplina, id_turma, v1, v2 e etc.)

matricula(fk) REFERENCES turma (matricula) on delete cascade,

id_disciplina(fk) REFERENCES disciplina (id_disciplina) on delete cascade,

id_turma(fk) REFERENCES turma (id_turma) on delete cascade,

 

 

 

tentei criar estes triggers, mas deu erro de sintaxe na linha 3... o que pode estar acontecendo?

 

CREATE TRIGGER add_matricula_turma AFTER INSERT ON aluno
FOR EACH ROW BEGIN
INSERT INTO turma (matricula) values ('20002000');
END;

CREATE TRIGGER add_matricula_boletim AFTER INSERT ON aluno
FOR EACH ROW BEGIN
INSERT INTO boletim (matricula) VALUES ('20002000');
END;

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está desenvolvendo a partir do terminal do Linux ou prompt do Windows, correto?

 

Faça assim:

DELIMITER //
CREATE TRIGGER trgt1 AFTER INSERT ON t1
FOR EACH ROW BEGIN
INSERT INTO t1 (id) values (1);
END;
//

Trocamos o delimitador para que o parser não entenda que o comando acaba logo após a linha do INSERT.

 

mysql> create table t1 (id int);
	-> //
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TRIGGER trgt1 AFTER INSERT ON t1 FOR EACH ROW BEGIN INSERT INTO t1 (id) values (1); END;//
Query OK, 0 rows affected (0.00 sec)

 

Dê uma lida neste artigo: http://imasters.com.br/artigo/8123/mys...sql_-_triggers/

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi <b>Wagner</b>,

 

Estou desenvolvendo em windows xp, no phpmyadmin atraves de importacao de um arq.sql...

 

fiz assim:

DELIMITER //
CREATE TRIGGER add_matricula_turma AFTER INSERT ON aluno
FOR EACH ROW BEGIN
INSERT INTO turma (matricula) values (NEW.matricula);
INSERT INTO boletim (matricula) VALUES (new.matricula);
END;
//

mas nao deu certo, apareceu o seguinte erro:

 

#1227 - Access denied; you need the SUPER privilege for this operation

 

O que estou fazendo de errado??

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada de errado. . .seu usuário de banco de dados não tem privilégios suficientes para a criação de triggers.

 

Entre em contato com seu provedor, geralmente você abre um chamado e eles criam para você os triggers.

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe pela demora para responder...

 

abri um chamado solicitando a operacao... estou no aguardo para podermos seguir com o topico...

 

existe meios de se trabalhar com innodb no servidor local(xampp)... li alguma coisa dizendo que nao, eh verdade?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O MySQL normalmente já vem com o InnoDB disponível para utilização, bastando habilitá-lo no arquivo de opções.

Sugiro dar uma lida neste artigo: InnoDB - Introdução e Principais Características

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, meu provedor me pediu um prazo até o meio do ano para fazer as alteracoes nas permissoes, é mole? não sei o que fazer...

 

há meios de eu continuar com o desenvolvimento localmente?

Uso:

ApacheFriends XAMPP (basic package) version 1.6.5 ######

+ Apache 2.2.6

+ MySQL 5.0.51

+ PHP 5.2.5 + PHP 4.4.7 + PEAR

+ PHP-Switch win32 1.0 (please use the "php-switch.bat")

+ XAMPP Control Version 2.5 from www.nat32.com

+ XAMPP Security 1.0

+ SQLite 2.8.15

+ OpenSSL 0.9.8g

+ phpMyAdmin 2.11.3

windows xp professional sp2...

 

atualmente atraves do phpmyadmin nao tenho a opcao innodb...

 

grato.

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.