使用触发器检查其他数据库中的值

时间:2009-03-25 13:23:30

标签: mysql triggers

是否可以使用触发器检查其他数据库中列中的特定值是否存在?这两个数据库位于同一个MYSQL实例中。具体来说,我想要做的是:

  1. 在将行添加到数据库A(Document_Index_table)内的表(Document_DB)之前。
  2. 触发了触发器。此触发器在行内携带列值(usr_id)之一,并将其​​传递给数据库B(User_Control_DB)。
  3. 根据值,User_Control_DB会检查表格usr_id的{​​{1}}列中是否存在usr_id
  4. 如果存在,则返回true到Usr_Information,并允许1.中的行添加到Document_DB
  5. 如果没有,则发出错误。没有行添加到Document_DB
  6. 如果可以完成,怎么办呢?

    编辑:两个数据库都是MySQL数据库

1 个答案:

答案 0 :(得分:0)

所以,我是数据库开发的新手,但你可以这样做:

在document_index_table上创建'Before'插入触发器。 触发器执行如下操作:

declare numRows integer;
select count(*) from user_control_db.usr_information where usr_id = NEW.usr_id into num_rows;
if (numRows > 0) then
   call NonExistentProc();
end if;

我相信这会实现你想要的。它会产生一个错误,如“PROCEDURE documentdb.NonExistenProc不存在”,如果在用户控件db中没有至少一行具有匹配的usr id,则跳过插入。

同样,我是这个数据库中的新手所以可能会有更优雅的方式,但这对我的单个测试用例起作用。

希望有所帮助。