mysql 主键相同还能写入数据

admin 2024-08-16 16:16:25 数据库 来源:ZONE.CI 全球网 0 阅读模式

MySQL 主键是一种关系型数据库中的一种非常重要的约束,用于保证数据表中的数据唯一性。在 MySQL 中,如果尝试插入一条数据,而该数据的主键与已有数据中的主键相同,会报错并插入失败。但是,在某些情况下,MySQL 主键可以不唯一,即相同主键的数据可以被插入。

mysql 主键相同还能写入数据

一个常见的例子是,在多个副本的系统中,不同的副本中可能出现相同的主键值。为了保证数据的一致性,需要将相同主键值的数据写入到所有的副本中,即是允许相同主键值的数据写入(这种场景下,需要特别注意数据的选择)。

-- 创建一个 student 表,且该表主键可以重复
CREATE TABLE student (
  id INT,
  name VARCHAR(50),
  PRIMARY KEY (id)
) ENGINE=InnoDB;

-- 插入两行主键值相同的数据
INSERT INTO student(id, name) VALUES(1, 'Tom');
INSERT INTO student(id, name) VALUES(1, 'Jerry');

-- 查询 student 表中的所有数据
SELECT * FROM student; 

在上述代码中,我们创建了一个名为 student 的表,并指定该表的主键可以重复。然后,我们尝试插入两行数据,它们的主键值都是 1。这时,如果 MySQL 主键完全遵循唯一性约束,我们应该会遇到唯一性冲突的错误;然而,在实际操作中,MySQL 并没有报错,而是成功插入了两行数据。

通过上述例子,可以看到即使主键是相同的,MySQL 也可以插入数据,但我们并不建议在日常的数据库设计和使用中使用这种方式,因为它可能导致数据不一致性和数据冲突的问题。

评论:0   参与:  40