当前位置: 首页 > 面试题库 >

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

时恩
2023-03-14
问题内容

我想知道MySQL的存储过程是否可以在同一台机器上使用两个不同的数据库?如果它们在不同的服务器上呢?


问题答案:

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

例如,假设你有在同一服务器上的两个数据库,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

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



 类似资料:
  • 问题内容: 我刚刚发现我可以使用Python编写一个非常简单的Web服务器。我已经有一个Apache Web服务器,我想在这台机器上尝试基于Python的Web服务器。但是,如果尝试尝试,可能会引起某种冲突。我的意思是两个Web服务器将如何“决定”谁需要服务器处理来自客户端的请求? 问题答案: 让他们监听不同的端口,您会没事的。 默认的Web端口是80。当您在浏览器中打开某些网址而不指定端口时,默

  • 我正在尝试创建一个spring-rest应用程序来返回可能来自两个不同LDAP目录服务器的值。是否可以使用springLDAP存储库?是否可以创建多个和以便查询这两个目录?

  • 问题内容: 因此,目前我有两个SQL Server,两个都运行2012,并且都运行单独的系统。 其中一台服务器在latin1_general_bin排序规则上运行,另一台服务器在上运行,理想情况下,我想关闭其中一台服务器并将所有系统移至一个位置。 我知道可以从技术上做到这一点,但是我想知道这是否是个好主意?我会导致自己更多的问题吗? 这两个数据库都是基于事务的,并且由外部各方定义,因此不能更改其排

  • 我有一个包含两个maven模块(moduleA和moduleB)的java项目,其中每个模块都希望访问同一库的不同版本(v1和v2)。moduleA使用moduleB作为依赖项。我创建moduleB主要是为了解决这个问题,同时也认为它将保持代码的良好组织。 我在moduleA的pom.xml中使用了maven shade插件,认为它将帮助我区分每个版本的类,但我仍然得到“NoSuchMethodE

  • 问题内容: 我想将数据从生产服务器发送到本地开发服务器以进行测试。我想知道是否可以使用SQL查询将记录从生产服务器的db表复制到本地db表中。这些表在列名和数据类型方面完全相同。 我知道我可以通过将转储到文件中然后使用infile加载来做到这一点。尽管我使用的是MySQL,但我想知道是否也可以在其他数据库中使用它,如果可以,怎么办? 问题答案: 至于MySQL,最简单的方法可能是(link): 使

  • 我查看了博客帖子、教程、人们的知识库,但没有任何帮助。以下是我所拥有的: 有两个带有MySQL数据库的Docker容器:和。两个容器都已启动,数据库可见,我可以查询表。 我想在我的项目中有两个数据源:一个用于电子书,另一个用于Spring Security表。 我编写了一个简单的,其中我只是自动连接两个存储库并检查它们的大小。 运行应用程序时,我得到: 但是,如果我在没有第二个数据源并使用常规Sp