存储过程:在同一mysql服务器上的两个数据库之间更新或插入数据

问题描述 投票:0回答:0

我正在尝试创建一个过程,将数据插入或更新到同一 MariaDB 服务器上不同数据库中的用户表中。我正在使用 phpMyAdmin。

我有以下两张表:

Database 1: members
    Table: tbl_members_contacts
        ContactTypeID INT (11)
        MemberID INT (11)
        ContactInfo VARCHAR (255)

Indexes:    
    Primary Unique  MemberID + ContactTypeID
    ContactInfo Unique
    

Database 2: members_sec
    Table: sec_users
        login INT (11)
        email VARCHAR (255)
Indexes:    
    Primary Unique  login

我只想在 ContactTypeID = 1(即成员的电子邮件地址)时更新数据库 1 上表中的数据。如果数据库 2 中不存在该成员的安全记录,我需要插入一条新记录。

当数据库表中的数据被添加或更改时,我将使用更新和插入触发器来调用该过程。

我尝试在数据库 1 上执行的过程:

DELIMITER $$

CREATE PROCEDURE sec_usersUpdate()
BEGIN
    IF tbl_members_contacts.ContactTypeID = 1 THEN
    INSERT INTO members_sec.sec_users
        (login, email)
        VALUES
        (tbl_members_contacts.MemberID, tbl_members_contacts.ContactInfo)
    ON DUPLICATE KEY UPDATE
        members_sec.sec_users.login = VALUES(tbl_members_contacts.MemberID),
        members_sec.sec_users.email = VALUES(tbl_members_contacts.ContactInfo);
    END IF;
END$$

DELIMITER ;

当我尝试在数据库 1 上运行查询时,收到以下消息:

MySQL 说道: #1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 'END IF; 附近使用的正确语法。 END' 在第 11 行

我以前从未尝试过做手术,所以我可能还很遥远。我真的很感激一些指导。

stored-procedures triggers phpmyadmin mariadb insert-update
© www.soinside.com 2019 - 2024. All rights reserved.