Mysql 重复输入';1';对于键';初级';SQL

Mysql 重复输入';1';对于键';初级';SQL,mysql,sql,Mysql,Sql,每次尝试运行此脚本时,我都会收到一个错误,即键“primary”的重复条目为“1”,我真的不知道如何修复它如果将列作为主键,则列中的每个值都必须是唯一的。添加第一个元组时,列POST_ID中已经有一个“1”的实例: CREATE TABLE Editor ( UsernameID VARCHAR (30), EditorName VARCHAR (30), EMail VARCHAR (30), DateOfBirth DATE, BlogTitle VARCHAR(30), PRIMARY K

每次尝试运行此脚本时,我都会收到一个错误,即键“primary”的重复条目为“1”,我真的不知道如何修复它

如果将列作为主键,则列中的每个值都必须是唯一的。添加第一个元组时,列POST_ID中已经有一个“1”的实例:

CREATE TABLE Editor (
UsernameID VARCHAR (30),
EditorName VARCHAR (30),
EMail VARCHAR (30),
DateOfBirth DATE,
BlogTitle VARCHAR(30),
PRIMARY KEY (UsernameID));

INSERT INTO Editor VALUES
('Mdbuzzer','Joshua', 'coker@hotmail.com', '1995-03-15', 'Nearly Bound');

INSERT INTO Editor VALUES
('Kally32','Kally', 'kally@hotmail.com', '1993-10-13', 'Tomorrows War');
SELECT * FROM Editor;



CREATE TABLE Post
(UsernameID VARCHAR (30),
PostID INT,
BlogTitle VARCHAR (30),
PostTitle VARCHAR (30),
CategoryID INT,
TimeofPost VARCHAR (20),
PRIMARY KEY(PostID),
FOREIGN KEY (UsernameID) REFERENCES Editor (UsernameID));

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War', 'Mystery', '4', '12:03pm');

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War', 'Let It Shine','2','10:05pm');

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War','Two Can Play That Game','2', '12:00pm');

INSERT INTO Post VALUES
( 'Mdbuzzer','2','Nearly Bound', 'Goal','3', '10:05pm');

INSERT INTO Post VALUES
( 'Mdbuzzer','2','Nearly Bound','Life After Death','4', '12:03pm');

INSERT INTO Post VALUES
('Mdbuzzer','2', 'Nearly Bound','Times Up','1', '14:06pm');

SELECT * FROM Post;
如果尝试在POST_ID列中添加另一个实例为“1”的元组,例如:

('Kally32','1','Tomorrows War', 'Mystery', '4', '12:03pm');

您将得到一个错误。

问题是您正在主键为1的POST表中插入多行。如果您试图实现主键,它必须是唯一的

因此:

('Kally32','1','Tomorrows War', 'Let It Shine','2','10:05pm');
可以更改为以下内容:

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War', 'Mystery', '4', '12:03pm');

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War', 'Let It Shine','2','10:05pm');

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War','Two Can Play That Game','2', '12:00pm');

INSERT INTO Post VALUES
( 'Mdbuzzer','2','Nearly Bound', 'Goal','3', '10:05pm');

INSERT INTO Post VALUES
( 'Mdbuzzer','2','Nearly Bound','Life After Death','4', '12:03pm');

INSERT INTO Post VALUES
('Mdbuzzer','2', 'Nearly Bound','Times Up','1', '14:06pm');

您已将
PostId
声明为
POST
的主键

使用插入时,应始终包括列。因此,以下是表中的前两个插入:

INSERT INTO Post VALUES
('Kally32','1','Tomorrows War', 'Mystery', '4', '12:03pm');

INSERT INTO Post VALUES
('Kally32','2','Tomorrows War', 'Let It Shine','2','10:05pm');

INSERT INTO Post VALUES
('Kally32','3','Tomorrows War','Two Can Play That Game','2', '12:00pm');
在这两种情况下,您都将
PostId
设置为相同的值
1
。因此出现了错误

我希望代码看起来像:

INSERT INTO Post(UsernameID, PostID, BlogTitle, PostTitle, CategoryID, TimeofPost)
    VALUES('Kally32','1','Tomorrows War', 'Let It Shine','2','10:05pm');

INSERT INTO Post(UsernameID, PostID, BlogTitle, PostTitle, CategoryID, TimeofPost)
    VALUES('Kally32','1','Tomorrows War','Two Can Play That Game','2', '12:00pm');

对这是一种非常典型的方法。
CREATE TABLE Post (
    UsernameID VARCHAR (30),
    PostID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    BlogTitle VARCHAR (30),
    PostTitle VARCHAR (30),
    CategoryID INT,
    TimeofPost VARCHAR (20),
    FOREIGN KEY (UsernameID) REFERENCES Editor (UsernameID)
);

INSERT INTO Post(UsernameID, BlogTitle, PostTitle, CategoryID, TimeofPost)
    VALUES('Kally32', 'Tomorrows War', 'Let It Shine', 2, '10:05pm');