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