[英]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.