我想在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 ;
关于mysql - 在mysql中创建复合索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209597/