2017-06-12 32 views
0

這是現在我得到的錯誤:SQL服務器:收到錯誤消息547,級別16,狀態0,第28行

消息547,級別16,狀態0,第28行
的INSERT語句與FOREIGN KEY約束「FK__Registrat__Cours__32E0915F」衝突。衝突發生在數據庫「Test2」,表「dbo.Course」,列'CourseCode'。

目前,我有這樣的:

CREATE TABLE Student 
(
    StudentID int PRIMARY KEY, 
    StudentFName varchar(30) NOT NULL, 
    StudentLName varchar(40) NOT NULL, 
    GPA float CHECK(GPA >= 0 AND GPA <= 4) 
) 

CREATE TABLE Course 
(
    CourseCode varchar(10) PRIMARY KEY, 
    CourseName varchar(50) UNIQUE, 
    Duration int CHECK(Duration > 0) 
) 

CREATE TABLE Registration 
(
    CourseCode varchar(10) REFERENCES Course(CourseCode), 
    StudentID int REFERENCES Student(StudentID), 
    CourseMark float CHECK(CourseMark >= 0 AND CourseMark <= 100) 
    PRIMARY KEY(CourseCode, StudentID) 
) 

INSERT INTO Course 
VALUES('ICT710', 'C#', 30) 

SELECT * FROM Registration 

INSERT INTO Registration 
VALUES('ICT128', 123, 78.5), 
     ('ICT128', 345, 68), 
     ('ICT710', 123, 80) 

如何解決這個問題?我試圖將這3行數據添加到我的Registration表中,如最後一行代碼所述。

+0

'CourseCode'列偏好來自'Course'表,您是否在課程表中添加了'ICT128'? –

+1

你是否在CourceCode「ICT128」的課程表中有行? –

+0

你可能想看看合併聲明。如果pk不存在,合併語句將插入該行,如果它已經存在,則更新。 https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx –

回答

0

您需要先將'CourseCode'ICT128插入課程表。

0
INSERT INTO Course 
VALUES('ICT710', 'C#', 30) 

INSERT INTO Course 
VALUES('ICT128', 'PHP', 30) 

SELECT * FROM Registration 

INSERT INTO Registration 
VALUES('ICT128', 123, 78.5), 
     ('ICT128', 345, 68), 
     ('ICT710', 123, 80) 
相關問題