我正在尝试创建一个名为tbl_users
的MySQL表。其中我有2列mobile
和altmobile
,从这两列中我想确保没有Mobile number
重复。每个数字在列中都应该是唯一的,并且应该在插入表之前从列中检查。
有可能吗?
我是这些先进的东西的新手。而不是在服务器端语言(PHP)上执行它我想在数据库级别本身处理它,因为这个表将有超过500k行。因此,为了确保流程运行得更快,我希望在数据库级别上自行完成。
假设我有一个号码236463646
,应该在mobile
和mobilealt
列中检查此号码,这样相同的号码条目就无法重新输入数据库。
以下是我的表结构的样子:
谢谢!
答案 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。