假设我有一个User
表,其中的username
列具有唯一约束。现在,我需要添加一个alias
列,该列也必须是唯一的,但是增加了一个要求,即两个用户不能具有相同的username
和alias
(user1.username <> user2.alias
)。我将如何使用MySQL执行此操作?
我知道复合唯一索引,但是它们检查username
和alias
的组合是否重复,而不是一个用户的username
等于新用户的alias
的组合。
最佳答案
我会在那张桌子上扳机。您在这里找到的详细信息-> https://www.siteground.com/kb/mysql-triggers-use/。
基本上,您将在每次插入之前执行检查。并不是表演的好朋友,但这可以满足您的需求。
CREATE TRIGGER aliascheck BEFORE INSERT ON User FOR EACH ROW IF NEW.alias in (select username from User) THEN SIGNAL SQLSTATE '45000' set message_text='Alias already exists!'; END IF;
... 或类似的东西。我有一个TSQL背景:)
关于mysql - 如何使一列在其他列中具有唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59635320/