如何从 MySQL 触发器调用 StoredProcedure 或函数?
我正在研究 MySQL 5.1.3 并使用 PHPMyAdmin 3.1.3.1 来访问它。使用 PHP 作为服务器端脚本语言。我的问题是,我们是否可以从触发器语句中调用存储过程或函数,以便在调用 INSERT|UPDATE|DELETE 触发器时,它会调用 SP 来根据定义的逻辑更新其他一些表。
I am working on MySQL 5.1.3 and using PHPMyAdmin 3.1.3.1 to access it. With PHP as the Server side scripting Language. My problem statement is can we call a Stored Procedure or Function from the Trigger statement so that when ever an INSERT|UPDATE|DELETE trigger is called, it calls the SP for updating some other tables according to the logic defined.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看这里Mysql触发器语法
可以更容易定义单独存储过程,然后使用简单的
CALL
语句从触发器中调用它。如果您想从多个触发器中调用相同的例程,这也是有利的。触发器在激活时执行的语句中可能出现的内容存在一些限制:
触发器不能使用 CALL 语句来调用将数据返回到客户端或使用动态 SQL 的存储过程。 (允许存储过程通过
OUT
或INOUT
参数将数据返回到触发器。)触发器不能使用显式或隐式开始或结束事务的语句,例如
>START
TRANSACTION
、COMMIT
或ROLLBACK
。Look here Mysql Trigger Syntax
It can be easier to define a stored procedure separately and then invoke it from the trigger using a simple
CALL
statement. This is also advantageous if you want to invoke the same routine from within several triggers.There are some limitations on what can appear in statements that a trigger executes when activated:
The trigger cannot use the
CALL
statement to invoke stored procedures that return data to the client or that use dynamic SQL. (Stored procedures are permitted to return data to the trigger throughOUT
orINOUT
parameters.)The trigger cannot use statements that explicitly or implicitly begin or end a transaction such as
START
TRANSACTION
,COMMIT
, orROLLBACK
.