插入语句与foriegn key fk_student冲突,冲突数据库" id"学生专栏

时间:2015-11-28 11:33:42

标签: c# mysql sql-server

protected void searchupdate_Click(object sender, EventArgs e)
            {
                SqlConnection con = Connection.DBconnection();
                {
                    SqlCommand com = new SqlCommand("sp_searchupdate", con);
                    com.CommandType = CommandType.StoredProcedure;
                    com.Parameters.AddWithValue("@id", txtid.Text.Trim());
                    com.Parameters.AddWithValue("@id_student", textstudentid.Text.Trim());
                    com.Parameters.AddWithValue("@tamil", txttamil.Text.Trim());
                    com.Parameters.AddWithValue("@english", txtenglish.Text.Trim());
                    com.Parameters.AddWithValue("@maths", txtmaths.Text.Trim());
                    com.Parameters.AddWithValue("@science", txtscience.Text.Trim());
                    com.Parameters.AddWithValue("@socialScience", txtsocialscience.Text.Trim());               
                    SqlParameter retval = new SqlParameter("@output", SqlDbType.VarChar, 50);
                    retval.Direction = ParameterDirection.Output;
                    com.Parameters.Add(retval);                
                    com.ExecuteNonQuery();
                    string Output = retval.Value.ToString();
                    output.Text = Output;
                    textstudentid.Text = string.Empty;
                    txttamil.Text = string.Empty;
                    txtenglish.Text = string.Empty;
                    txtmaths.Text = string.Empty;
                    txtscience.Text = string.Empty;
                    txtsocialscience.Text = string.Empty;              
            }

存储过程:

ALTER PROCEDURE sp_searchupdate
(
@id int,
@id_student int,
@output varchar(50) output,
@Tamil Varchar (100),
@English varchar (50),
@Maths Varchar (50),
@Science Varchar (50),
@SocialScience Varchar (50) 
)
AS
IF EXISTS (SELECT * FROM studentresult WHERE id=@id) 
BEGIN
UPDATE studentresult SET Tamil = @Tamil,English = @English, Maths = @Maths,Science = @Science,SocialScience = @SocialScience WHERE id = @id
SET @output='Updated'
END
ELSE
BEGIN
INSERT INTO  studentresult  (id_student,Tamil,English,Maths,Science,SocialScience) values (@id_student,@Tamil,@English,@Maths,@Science,@SocialScience)
SET @output='Inserted'
END

当我输入输入值并单击更新时...它显示以下错误:

  

与外键fk_student插入语句冲突。   声明终止

我是.net的新手,任何人都可以帮我解决我的错误......或者我该怎么办?

任何帮助都将受到高度赞赏.. 谢谢,

1 个答案:

答案 0 :(得分:0)

最有可能的是,您正在尝试插入引用表的主键中不存在的ID。

当坏数据传递到表中并且两个表之间定义了外键约束时会发生这种问题,这些约束不允许插入这些数据。

规则是这样的,FK(外键)不能在该列中具有值,该值也不在引用表的主键列中。因此,您可能需要检查通过查询的值。

希望这有帮助。