2011-09-26 33 views
1

我有兩張表,即註冊和考勤。註冊的主鍵是UnitCode和StudentID。分配的主鍵是UnitCode,StudentID(這兩個鍵都是登記中相同列的外鍵)和AssNo。SQL - 插入與外鍵衝突的陳述

我有一個名爲插入學生出勤情況的存儲過程:

ALTER PROCEDURE dbo.InsertStudentAttendance 

@unitCode varchar(4), 
@studentID integer, 
@date datetime 

AS 
    INSERT INTO Attendance 
    (UnitCode, StudentID, AttDate, AttStatus) 
    VALUES(@unitCode, @studentID, @date, 1) 
    RETURN 

調用像這樣的程序:

InsertStudentAttendance 'SIT101',1, '2011-06-04'

結果的錯誤:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Attendance_308E3499". The conflict occurred in database "db_test", table "dbo.Enrolment". 

但是,這隻發生在我使用stor而不是當我手動輸入值到完全相同的命令。在招生中,UnitCode'SIT101'中註冊了StudentID 1。任何想法出了什麼問題?

在此先感謝。

+0

您忘記了包含表格信息。 「入學的主要關鍵是...」是什麼? – Tony

+0

如何調用過程,以及手動插入時使用了哪些SQL?您是否記得在調用存儲過程之前刪除手動插入的行? –

回答

1

在您的存儲過程聲明中,您有@unitCode varchar(4),但似乎您嘗試插入的值是SIT101

這將被悄悄截斷爲SIT1這不存在 - 因此FK違規。

增加參數類型的長度以匹配列的長度。