/ / MySql console não responde - mysql, sql, triggers, console, delimitador

Console MySql não responde - mysql, sql, triggers, console, delimitador

Depois de inserir os gatilhos, o console parece estar em um estado ímpar onde os comandos normais não são respondidos. Estou inadvertidamente fazendo isso com o delimitador?

mysql> use nntp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------+
| Tables_in_nntp      |
+---------------------+
| articles            |
| newsgroups          |
| newsgroups_articles |
+---------------------+
3 rows in set (0.00 sec)

mysql> show triggers;
Empty set (0.00 sec)

mysql> DELIMITER $$
mysql> USE `nntp`$$
Database changed
mysql> CREATE
-> TRIGGER `nntp.newsgroups.before_insert`
-> BEFORE INSERT ON `nntp`.`newsgroups`
-> FOR EACH ROW
-> BEGIN
-> set new.hash = md5(new.newsgroup);
-> END$$
Query OK, 0 rows affected (0.18 sec)

mysql> DELIMITER $$
mysql> USE `nntp`$$
Database changed
mysql> CREATE
-> TRIGGER `nntp.newsgroups.before_update`
-> BEFORE UPDATE ON `nntp`.`newsgroups`
-> FOR EACH ROW
-> BEGIN
-> set new.hash = md5(new.newsgroup);
-> END$$
Query OK, 0 rows affected (0.19 sec)

mysql> show triggers;
-> ^CCtrl-C -- exit!
Aborted
thufir@dur:~$

Respostas:

1 para resposta № 1

Você precisa mudar o delimitador de volta quando você terminar de criar um gatilho ou rotina, caso contrário você terá que usar o mesmo delimitador (neste caso $$) para todas as declarações subsequentes.

Por exemplo:

mysql> DELIMITER $$
mysql> USE `nntp`$$
Database changed
mysql> CREATE
-> TRIGGER `nntp.newsgroups.before_update`
-> BEFORE UPDATE ON `nntp`.`newsgroups`
-> FOR EACH ROW
-> BEGIN
-> set new.hash = md5(new.newsgroup);
-> END$$
Query OK, 0 rows affected (0.19 sec)

mysql> DELIMITER ;
mysql> show triggers;

Observe o segundo uso do DELIMITER palavra chave.