2014-11-30 3 views
-2
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', '[email protected]', '1995-03-15', 'Nearly Bound'); 

INSERT INTO Editor VALUES 
('Kally32','Kally', '[email protected]', '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; 

이 스크립트를 실행할 때마다 키 '기본'에 대해 중복 항목 '1'이 표시되는 오류가 계속 발생하며 실제로 어떻게해야하는지 이해하지 못합니다. 수정키 'PRIMARY'에 대한 중복 항목 '1'SQL

답변

1

문제는 PRIMARY KEY가 1 인 POST 테이블에 여러 행을 삽입하는 것입니다. 기본 키를 구현하려는 경우 고유해야합니다.

그래서이 :

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'); 

는 다음과 같이 변경 될 수 있습니다 : 당신은 POST의 기본 키로 PostId을 선언 한

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'); 
1

열을 기본 키로 만들면 열의 모든 값이 고유해야합니다. 이미 첫 번째 튜플 추가 할 때 열 POST_ID에 '1'의 인스턴스를 가지고 :

:

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

을 당신은 같은 열 POST_ID에서 '1'의 인스턴스와 다른 튜플을 추가하려고하면

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

오류가 발생합니다.

1

.

insert을 사용할 때는 항상 열을 포함해야합니다.

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'); 

당신은 두 경우 모두, 같은 값, 1PostId을 설정하는 : 그래서,이 테이블에 처음 두 삽입입니다. 따라서 오류. 예

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'); 
+0

:

나는 코드가 같이 기대. 이것은 매우 전형적인 접근 방식입니다. –

관련 문제