使用多列检查创建列UNIQUE

时间:2016-04-13 10:39:50

标签: mysql

我正在尝试创建一个名为tbl_users的MySQL表。其中我有2列mobilealtmobile,从这两列中我想确保没有Mobile number重复。每个数字在列中都应该是唯一的,并且应该在插入表之前从列中检查。

有可能吗?

我是这些先进的东西的新手。而不是在服务器端语言(PHP)上执行它我想在数据库级别本身处理它,因为这个表将有超过500k行。因此,为了确保流程运行得更快,我希望在数据库级别上自行完成。

假设我有一个号码236463646,应该在mobilemobilealt列中检查此号码,这样相同的号码条目就无法重新输入数据库。

以下是我的表结构的样子:

enter image description here

谢谢!

2 个答案:

答案 0 :(得分:2)

我将移动号码放在一个单独的表中的一列中,并从users表中引用它们。这样,您可以轻松地在移动号码列上应用唯一约束。

答案 1 :(得分:0)

所以,你可以写下面的触发器。此触发器配置为在表上插入之前激活,如果2个移动字段相等,则检入IF语句。如果是,系统将抛出一个异常,停止插入过程。

delimiter |

CREATE TRIGGER unique_email BEFORE INSERT ON tbl_users
  FOR EACH ROW
  BEGIN
     DECLARE msg varchar(255); 
     IF new.mobile = new.altmobile THEN
        SET msg = 'The mobile number must be unique.' 
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; 
     END IF;
  END;
|

另外,请阅读此材料以了解概念以及如何实施:mysql triggers tutorial