SQL - 避免 1 条记录中的 2 列具有相同的值

SQL - Avoid 2 columns in 1 record having the same value

我现在正在为我的个人项目开发一个新的 MySQL 数据库(接口 PHPmyadmin),我不知道如何避免同一 table 上的两列具有相同的内容价值。所以,我希望我们不能在一条记录中为 2 个不同的列插入相同的值。

示例

TABLE A

id name firstname
1  john   Marry   => will be possible
2  Marry   John   => will be possible
3  John    John   => won't be possible
4  test    test   => won't be possible 

我希望同一记录中的两列不能有相同的值

通常您会为此使用 CHECK 约束。 Bu MySQL 目前不支持它们。它接受输入但忽略它们。

但是您可以使用触发器在某些条件下取消 insertion/update,例如

delimiter //
CREATE TRIGGER check_trigger BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN        
    IF (NEW.name = NEW.firstname) THEN
        SIGNAL SQLSTATE '45000' 
            SET MESSAGE_TEXT = 'same names error. Insertion canceled';
    END IF;
END
//
delimiter ;

您还需要一个触发器来执行相同的更新。