MySQL触发器检查另一个DB的表中是否存在值

时间:2015-05-06 20:13:40

标签: mysql

我需要创建一个触发器,插入之前会检查 用户名是否正在尝试添加,已存在< / strong>(区分大小写)在另一个数据库(相同的mysql服务器)的表中。

这是我到目前为止所做的:

CREATE TRIGGER trig_user_insert BEFORE INSERT ON users
FOR EACH ROW BEGIN
  IF ( ) THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error message';
  END IF;
END

那么,如果只有存在于另一个数据库的表中然后插入行,我该如何才能使更有效的方法来阻止SIGNAL以外的插入?

1 个答案:

答案 0 :(得分:0)

尝试:

CREATE TRIGGER tg_bi_users
BEFORE INSERT ON users
FOR EACH ROW
  SET NEW.user = IF(EXISTS
 (
   SELECT * 
    FROM othertable 
   WHERE user IN(NEW.user)
 ), NULL, NEW.user);