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