Pen*_*m10 19 mysql sql stored-procedures
我想知道MySQL的存储过程是否可以在同一台机器上使用两个不同的数据库?如果他们在不同的服务器上怎么样?
Ham*_*ite 21
如果我们在同一台服务器上讨论两个数据库:是的,存储过程可以访问另一个数据库.您必须确保正在运行该过程的用户具有对每个数据库的必要特权.
例如,假设你有在同一服务器上的两个数据库,mydb1并mydb2和每个包含一个名为表messages具有相同的结构.假设您要添加一个存储过程来mydb2清空该messages表mydb2并复制该messages表的内容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
Run Code Online (Sandbox Code Playgroud)
看看我如何使用它们所属的数据库完全限定表.事实上你可能会说我在这里过于热心,因为我们指定这个存储过程属于mydb2.我不需要添加限定符.如果存储过程在mydb2.mydb1数据库中,我需要那些限定符,但相反我不需要它出现的位置.mydb1.
为了能够运行这个过程(可能是为了能够定义它?),我需要确保我的用户拥有权限DELETE和INSERT特权mydb2,以及SELECT特权mydb1.
不同服务器上的数据库听起来相当复杂.
| 归档时间: |
|
| 查看次数: |
27926 次 |
| 最近记录: |