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

标签 mysql indexing

我现在正在为我的个人项目开发一个新的 MySQL 数据库(接口(interface) PHPmyadmin),我不知道如何避免同一个表上的两列具有相同的值。所以,我希望我们不能在一条记录中为 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 目前不支持它们。它接受输入但忽略它们。

但是你可以使用触发器在某些条件下取消插入/更新

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 ;

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

关于mysql - SQL - 避免 1 条记录中的 2 列具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964067/

相关文章:

mysql - 左连接表有两个条件

在 where 子句中添加列的查询的 MySQL 性能

reactjs - React Tabs onClick 获取所选选项卡的索引

python-3.x - python griddata : "builtins.IndexError: index 0 is out of bounds for axis 0 with size 0" 错误

php - 得到n深类别树后的多维数组

mysql - 订购所有查询

mysql - Pentaho - Group By step 不返回时间戳值

php - 从不同的表中选择多行 mysqli 以合并并导出为 CSV

mysql - 速度和性能优化问题: Multiple database model vs single database

MySQL UNIQUE 和 INDEX 在 Column 上的使用