Insert语句与外键冲突

来源:互联网 发布:手机淘宝官方客服电话 编辑:程序博客网 时间:2024/05/17 08:39

    提示错误: 

消息 547,级别 16,状态 0,第 2 行INSERT 语句与 FOREIGN KEY 约束"FK_T_Student_T_CardInfo"冲突。该冲突发生于数据库"SchoolRecharge_sys",表"dbo.T_CardInfo", column 'CardID'。语句已终止。(1 行受影响)

 

     先看一段我写的SQL代码:   

-- 向学生信息表中插入相关信息Insert Into T_Student (StudentID,StudentName,CardID ,Sex,Department,Grade,Class,Comment) values('456','lccc','456','男','化材','2008','7','成功')--向卡号信息表中插入相关信息Insert into T_CardInfo (CardID,IsUsing,Balance,IsCheck) values('456','使用','100','未结账')--注册的时候涉及到充值,将相关信息插入到充值表中Insert into T_Recharge (CardID,AddMoney,Date,Time,Operator) values('456','100','2013-5-31','11:09:35','Admin')

    
    下面是我之前查询时用到的视图和外键约束:

   

    原因:

    在建立的外键约束中,因为表T_Student中的CardID引用到了表T_CardInfo中的主键CardI,故在插入数据的时候应该首先在T_CardInf的CardID插入,然后才能向T_Student中插入数据。   

 

    同理:

    在删除数据的时候应该倒过来,先删除从表T_Student中数据然后是主表T_CardInfo中的数据。当然,也可以利用级联修改和删除。

 

    其实这个问题很简单,只需要注意一下外键约束的性质就够了。但就是这么一点点,很让人抓狂,本来3分钟的事情,就会需要30分钟甚至3个小时。平常遇到问题我们的第一反应可能就是上网找,或者是看书,或者是找同学,而很多时候很多错误和问题都是我们差的这一点点,再多一步思考也许就会解决。解决之后还可以进行延伸,这样子对它的认识会更深刻。

 

   PS:在VS中敲写SQL语句的时候最好首先将该语句在SQL Server中运行一次,检查是否执行正常,否则在VS运行的时候出错就有可能需要调试很长时间了。
原创粉丝点击