在mysql中创建复合索引

时间:2015-01-29 07:58:39

标签: mysql sql

我想以这样的方式在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.

1 个答案:

答案 0 :(得分:0)

您无法使用索引执行此操作,因为它适用于不同的行,而不会检查单行中的列。

您可以在其他数据库引擎中使用检查约束,但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 ;