1

目前,当将新行插入到我的users表中时,我分别在每个其他表中插入了 1 行:

profiles
user_settings
user_activity

目前我正在从PHP做if:

$query = mysql_query('INSERT INTO `users` blah blah...');

if($query) {
   mysql_query('INSERT INTO `profiles` blah blah...');
   mysql_query('INSERT INTO `user_settings` blah blah...');
   mysql_query('INSERT INTO `user_activity` blah blah...');
}

如何通过存储过程来做到这一点?这样这项工作将由数据库服务器而不是 PHP 代码完成。从存储过程与代码相比,这样做有什么好处吗?

4

1 回答 1

0

我认为你正在寻找的triggers不是stored procedures。您可以在triggers插入/更新/删除查询之后或之前执行查询。

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

优点:它直接在数据库中存储和调用,我认为它的性能也更高。

例子:

CREATE TRIGGER mytrigger AFTER INSERT ON users
   FOR EACH ROW BEGIN
      INSERT INTO `profiles` blah blah...;
      INSERT INTO `user_settings` blah blah...;
      INSERT INTO `user_activity` blah blah...;
END;
于 2012-07-29T22:05:17.060 回答