繁体   English   中英

在mysql中创建复合索引

[英]create composite index in mysql

我想以这样一种方式在mysql中创建索引,即两列的值不应相同,而在不同的行中它们可能相同。

+-------------------+------------+-------+
| id                | value 1    |value 2| 
+-------------------+------------+-------+
| id                | 2          | 1     | 
| user_id           | 2          | 1     | 
| following_user_id | 2          | 2     | (value should never like this )
+-------------------+------------+-------+

这意味着不同行中的值可能相同,但不同列中的值可能相同。 我说的是价值1和价值2。

您不能使用索引来执行此操作,因为它适用于不同的行并且不检查单个行中的列。

您可以在其他数据库引擎中使用检查约束,但是MySQL目前确实忽略了这一点。

使用触发器检查值,如果值不正确,则中止插入/更新。 要进行更新,您可以使用类似这样的内容

delimiter |
CREATE TRIGGER your_update_trigger BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
    IF NEW.value1 = NEW.value2 THEN 
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'An error occurred. Same IDs are not allowed';
    END IF;
END
|
delimiter ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM