假设我有一个User表,其中的username列具有唯一约束。现在,我需要添加一个alias列,该列也必须是唯一的,但是增加了一个要求,即两个用户不能具有相同的usernamealiasuser1.username <> user2.alias)。我将如何使用MySQL执行此操作?

我知道复合唯一索引,但是它们检查usernamealias的组合是否重复,而不是一个用户的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/

10-13 05:32