我有一个包含三个表的数据库。 表认证包括以下内容:正确创建关系数据库
+----------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------+------+-----+---------+----------------+
| id | int(6) unsigned | NO | PRI | NULL | auto_increment |
| userid | varchar(30) | NO | | NULL | |
| password | varchar(30) | NO | | NULL | |
| role | varchar(20) | NO | | NULL | |
| email | varchar(50) | YES | | NULL | |
+----------+-----------------+------+-----+---------+----------------+
登录包含以下内容:
+--------------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------------+------+-----+---------+----------------+
| id | int(6) unsigned | NO | PRI | NULL | auto_increment |
| TimeLoggedIn | text | NO | | NULL | |
| sessionid | varchar(255) | NO | | NULL | |
+--------------+-----------------+------+-----+---------+----------------+
而且活动时间:
+----------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------------+------+-----+---------+-------+
| id | int(6) unsigned | NO | PRI | NULL | |
| Torrents | mediumtext | NO | | NULL | |
+----------+-----------------+------+-----+---------+-------+
还有就是ID在认证的ID字段之间的关系其他表格。
我需要在Activity中添加多行,并为每个id使用几个Torrents值。不幸的是,当我尝试添加一个新行的值复制ID具有:
INSERT INTO `Activity` (`id`, `Torrents`) VALUES ('1', 'dssfsdffdsffs');
它给我的错误:#1062 - Duplicate entry '1' for key 'PRIMARY'
如何解决这个问题呢?我是如何创建表错误的?
我读过以下明显重复的问题:
但是,虽然它说,删除它作为我的主键,MySQL的didnt允许我,除非我犯了创建关系它是主键。
这不是应该发生什么? – Strawberry
@Strawberry你的意思是我不能有包含重复'id'值的行吗? – Droidzone
如果它是主键,则不行。 id和torrents一起形成一个自然的PK,或者你有一个surrogate activity_id列。如果您选择代理键,那么通常会在其余列上形成一个UNIQUE KEY。 – Strawberry