sql – 存储过程可以使用两个不同的数据库吗?两台服务器怎么样?

前端之家收集整理的这篇文章主要介绍了sql – 存储过程可以使用两个不同的数据库吗?两台服务器怎么样?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道 MySQL的存储过程是否可以在同一台机器上使用两个不同的数据库?如果他们在不同的服务器上呢?

解决方法

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

例如,假设您在同一服务器mydb1和mydb2上有两个数据库,并且每个包含一个名为具有相同结构的消息的表.假设要将存储过程添加到mydb2中,将mydb2中的消息表清空,并复制mydb1中消息表的内容.你可以这样做:

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.出现在哪里

为了能够运行此过程(可能为了能够定义它),我需要确保我的用户对mydb2具有DELETE和INSERT权限,以及mydb1上的SELECT权限.

不同服务器上的数据库听起来更复杂.

猜你在找的MsSQL相关文章