Mysql 主复合键在两列上不是唯一的

Mysql 主复合键在两列上不是唯一的,mysql,Mysql,我有一个具有两个标识列id和租户id的表,但在执行插入时,我很难强制执行数据完整性。。。在重复密钥更新时 我有两个要求 id列必须始终是唯一的 id和租户id的组合应始终是唯一的 模式 资料 当我在id和租户id之间定义复合主键并运行插入时。。。在重复密钥更新时,id列允许插入重复id 所以我最终得到了 |id |tenant_id |name ------------------------------ |1 |1 |NEW DATA |1 |2

我有一个具有两个标识列id和租户id的表,但在执行插入时,我很难强制执行数据完整性。。。在重复密钥更新时

我有两个要求

id列必须始终是唯一的 id和租户id的组合应始终是唯一的 模式

资料

当我在id和租户id之间定义复合主键并运行插入时。。。在重复密钥更新时,id列允许插入重复id

所以我最终得到了

|id    |tenant_id  |name
------------------------------
|1     |1          |NEW DATA
|1     |2          |Some name
|2     |1          |Other name
|3     |2          |Another name

我尝试了大量使用主索引和唯一索引的组合,但我无法使数据服从列上的自动递增和主键,因此在上面的示例中,“新数据”应具有4的新ID。

那么只有第一个要求才真正重要。如果第一列总是不同的唯一,那么与第二列的组合也只能是唯一的。

如果其中一个字段必须是唯一的,为什么要有一个复合PK?这是一个好问题,我还没有找到一种方法来进行插入。。。如果我没有在id和tenant_id列上指定复合主键或唯一的聚合索引,则在重复键上正确更新函数
|id    |tenant_id  |name
------------------------------
|1     |2          |Some name
|2     |1          |Other name
|3     |2          |Another name
|id    |tenant_id  |name
------------------------------
|1     |1          |NEW DATA
|1     |2          |Some name
|2     |1          |Other name
|3     |2          |Another name