交流很重要!上次师傅给开会时候,说出了心中的一点困惑:虽然学了SQL SEVER 视频,并且基本上都实现了机房收费系统的各项功能,但是对于SQL SEVER中的很多知识点还是一窍不通!比如触发器,存储过程,主外键,批处理等还是迷迷糊糊的一头雾水!师傅很利索的来了一句让我当初感觉“站着说话不腰疼”的话:"你可以用上触发器或者存储过程来解决一下你在机房收费系统中的问题!" 好奇心害死猫,这句话真的不怎么对——至少对于目前的我而言。我是一个乖孩子,哈哈哈。师傅的话,更重要的是自己的好奇心迫使自己扎进SQL
SEVER中重新探索起来。
于是自己重新摸索着在数据库中建立触发器;自己当时的思路是:对于机房收费系统中的学生退卡后,那么在学生退卡表中添加相应的记录,同时学生注册表中就应该删除所退卡的学生信息。和别人交流后,就尝试着用触发器来解决这个问题。自己在没建立触发器之前,删除两个表中的数据没有任何报错提示。但是当我建立好触发器:
use charge
go
create trigger [tr_1]
on studentcancelcard
after delete
as
delete from StudentRegisterInfo where cardid ='1'
go
时,再次去删除表studentcancelcard表中卡号为1 的学生信息的时候,突然报错:
以前也遇到过这样的问题,当时看的迷迷糊糊,上网查后也是不知所云;现在仔细的看一下才明白了那么一点点:因为我在表studentcancelcard表中建立的触发器,这个出发器的功能是:在studentcancelcard删除数据时,那么同时删除表studentregister中卡号为1的学生信息。因为这个触发器,关联着两个表,所以当进行删除操作的时候,会报如上图所示错误。现在看上图中的错误消息:已更新或删除的行值不能使该行成为唯一行,要么改变了多个行。仔细理解一下,也就是说数据库表中有关联,如果对一个表中的记录进行操作,那么会引起另一个表的变化。
对于这个问题,如果想要删除某条有联系的记录的话,我们可以通过sql 语句来删除,例如:
use charge
delete from StudentCancelCard where cardid ='1'
删除成功!
总结一下:对于这个问题,就是所操作的表与数据库中的其他表有关联。想要删除,用sql语句删除就可以了;更重要的是:说的:一切派都是纸老虎!!!
分享到:
相关推荐
SQL Sever数据库
详尽讲解了SQL Sever的基础理论及使用的操作方法,同时还包含了较高要求的SQL能力提升部分
SQL2005删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法
本文解决安装SQL Server2008R时试图执行未经授权的操作错误问题,在安装时经常会出现一些错误,弄的我们很烦躁。这里整理了一些在安装时出现错误该如何解决的方法。
Sql sever 教程 PPT 很好的
sqlsever存储过程
sql sever自学教程 pdf格式 适合新手,想自学sql的读者
sql sever2005安装,主要是针对用户二次安装是遇到的问题
My SQL and SQL Sever 对比,收集的有关这两种数据库的区别和相同点。。。。。
SQL sever 2012 从零开始学
sql sever 数据库 是一个数据库的数据库sql sever 数据库 是一个数据库的数据库sql sever 数据库 是一个数据库的数据库
sqlsever 2005 数据库基础 插入 删除 查询 内涵实验题目及报告。。对初学者很有帮助
SQLSever 2000常用函数手册
关于SQL Sever的索引、存储过程、触发器、面试题的解释与回答
C#+SQL Sever 开发远程分布式数据库查询系统
触发器的基本应用,可以了解sql sever 2000触发器的基本应用
sqlsever2000 驱动需要的3个jar包
sql sever 2005 x64 安装包,包含服务器安装和工具安装。
chm格式的SQL sever 参考手册,可供Web开发人员学习、参考SQL sever 相关知识。 内容全面,查找方便,个人感觉是一本非常好的参考手册。
SQL Sever2005学习资料,简明易懂,初学者的最优选择,让编程从此不再头疼