您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

存储过程可以与两个不同的数据库一起工作吗?两台服务器怎么样?

存储过程可以与两个不同的数据库一起工作吗?两台服务器怎么样?

如果我们要讨论的是同一台服务器上的两个数据库:是的,存储过程可以访问另一个数据库。您必须确保正在以其特权运行该过程的用户在每个数据库上都具有必需的特权。

例如,假设你有在同一服务器上的两个数据库mydb1mydb2和每个包含一个名为表messages具有相同的结构。假设你想存储的过程添加mydb2该清空messagesmydb2和复制的内容messagesmydb1。您可以这样做:

CREATE PROCEDURE `SynchroniseMessages` ()
LANGUAGE sql
NOT DETERMINISTIC
MODIFIES sql DATA
sql Security DEFINER
BEGIN

DELETE FROM `mydb2`.`messages`;

INSERT INTO
    `mydb2`.`messages`
    SELECT * FROM `mydb1`.`messages`;

END

查看我如何用表所属的数据库对表进行完全限定。实际上,您可能会说我在这里太热心了,因为我们指定了此存储过程将属于mydb2。我不需要添加mydb2`.`限定符。如果存储过程在`mydb1`数据库中,那么我将需要那些限定符,但是相反,我将不需要mydb1.它出现的位置。

为了能够运行此过程(可能是为了对其进行定义?),我需要确保我的用户具有DELETE和的INSERT特权mydb2,还具有的SELECT特权mydb1

不同服务器上的数据库听起来要复杂得多。

其他 2022/1/1 18:48:26 有378人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶