2012-07-29 73 views
0

输入触发器后,控制台看起来处于一种奇怪的状态,正常的命令没有响应。我是否无意中用分隔符来做这件事?MySql控制台无响应

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 
[email protected]:~$ 

回答

1

您需要更改分隔符回来时,你就大功告成了创建触发器或程序,否则你将不得不使用相同的分隔符(在这种情况下$$)为随后的所有语句。

例如:

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; 

注所述第二使用DELIMITER关键字。