我在哪里写 MySQL 触发器

Posted

技术标签:

【中文标题】我在哪里写 MySQL 触发器【英文标题】:Where do I write MySQL trigger 【发布时间】:2011-01-20 11:05:20 【问题描述】:

我没有为我的作品写任何触发器。现在我想知道如何编写触发器以及在哪里编写它。是否可以在 phpmyadmin 中将触发器编写为 SQL 查询。

请帮我写一个简单的触发器...

我尝试如下

Create Trigger sales_bi_trg
BEFORE INSERT ON sales
FOR EACH ROW
BEGIN
DECLARE num_row INTEGER ;
DECLARE tot_rows INTEGER ;
SELECT COUNT(*)
INTO tot_rows
FROM sales
WHERE employee_id = NEW.employee_id ;
   IF num_row > 0 THEN
       UPDATE perfomance 
    SET total_sales = NEW.sale_amt + total_sales,
    ave_sale = total_sales/(tot_rows + 1)
    WHERE employee_id = NEW.employee_id ;
   ELSE
   INSERT INTO perfomance
(employee_id, name, total_sales,ave_sale)
VALUES (NEW.employee_id, NEW.name, NEW.sale_amt, NEW.sale_amt) ;
   END IF ;

提前致谢 尼桑特

【问题讨论】:

【参考方案1】:

您应该查看有关触发器的 mysql 文档。

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

【讨论】:

【参考方案2】:

在 phpMyAdmin 中,您可以在 SQL 窗口中创建触发器。

您可能必须将分隔符设置为“$$”而不是默认的“;”。您可以从 SQL 窗口底部轻松更改此设置。

Delimiter in phpMyAdmin http://img52.imageshack.us/img52/9144/phpmyadmin.jpg

此外,请确保使用您的示例中缺少的 END 命令关闭触发器块。

【讨论】:

与问题或您的答案无关 - png 屏幕截图尺寸更小会更好看 ;-) 嗨丹尼尔,如果你不介意你可以写一个简单的代码。我尝试了很多时间,但出现了一些 sql 语法错误 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 20 行的 '' 附近使用正确的语法这是我的错误 @Nisanth:我本来打算评论 VALUES () 语法错误,但现在我看到您已经更新了答案。此外,请确保使用您的示例中缺少的 END 命令关闭触发器。 是的.. 知道这就是问题所在。我忘了用 END 关闭触发器 .. 非常感谢 Daniel

以上是关于我在哪里写 MySQL 触发器的主要内容,如果未能解决你的问题,请参考以下文章

mysql关于触发器怎么判断数据存在时更新不存在时添加呢!

MYSQL CONSOLE 中的触发器

我在哪里可以获得 Laravel 事件的完整列表(由核心库触发)?

Mysql:更新触发器错误:操作数应包含 1 列

Navicat for MySql 下写触发器

Expression Blend 4 中的触发器面板在哪里?