读书人

SQL中的相干表的同时删除

发布时间: 2013-10-08 16:32:36 作者: rapoo

SQL中的相关表的同时删除

在敲机房收费系统的时候,就遇到一个问题,大概意思如下所示:

SQL中的相干表的同时删除

SQL中的相干表的同时删除

就是在我们注销用户的时候,同时需要把所有的有关用户的信息同时的删除。这时候就有三个办法可以解决。

在vb中,可以找出要删除的相关的信息后,同时删除两次。

    Dim mrc As ADODB.Recordset    Dim txtsql As String    txtsql = "delete * from information where idcard='" & Trim(txtidcard.Text) & "'"

就是多次删除有关的用户的信息。

在SQL中也可以采取触发器来删除相关的用户的信息。

create trigger [dbo].[trdelstudent_information]on [dbo].[student_information]for delete as delete online from deleted wheredeleted.idcard=online.idcard

通过触发器的删除事件,来触发相应的表的字段的删除。

在SQL中也可以通过事务来执行相关的操作。

SQL中的事务就是为了解决当使用删除或者更新命令对数据库进行更新的时候,一次

只能操作一个表,解决带来数据的不一致的问题,就如上面问题所示。解决办法如下:

begin transaction @transaction_delete
godelete from userinformation where dept_id = ’101’godelete from online where dept_id = ’101’gocommit transaction my_transaction_deletego

上面的整个语句作为一个事务来处理,就是作为一个整体来处理,同时删除了相关表

中的无用的信息。

通过比较三种办法,第一种办法比较的麻烦,尤其在VB里面需要建立不同的连接来删除,当设计到表比较多的时候,操作极其麻烦。相比较事务和触发器来说,操作相对简单。与check约束相比,触发器可以强制实现更加复杂的数据完整性,而且可以参考其他表的字段。



4楼hanxintong94天前 18:47
进度很快呢 感觉你的理解很深刻 向你学习
3楼lfmilaoshi5天前 21:06
不断的提出问题解决问题,这就叫学习。
2楼Augus33445天前 20:15
很好,把视频的理论运用到了实践,看到了你的收获,加油!
1楼u0100288695天前 10:30
进度真快, 学习啦。

读书人网 >SQL Server

热点推荐