(1)分别对三张表进行操作,客户端会发出三次对服务器的操作请求,增大网络流量。
(2)建立触发器,批量更新数据时不行,inserted和deleted中只保留批量更新的最后一条记录。
(3)使用存储过程(推荐使用),在存储过程中同时包含对三张表的更新,性能也最高。不过唯一缺点是当直接对某表进行操作时(如在sql server的企业管理器中更改表)时,无法保持三张表数据一致(不过一般不会允许用户这样操作),可使用外键约束来保证其数据完整性。
(2)建立触发器,批量更新数据时不行,inserted和deleted中只保留批量更新的最后一条记录。
(3)使用存储过程(推荐使用),在存储过程中同时包含对三张表的更新,性能也最高。不过唯一缺点是当直接对某表进行操作时(如在sql server的企业管理器中更改表)时,无法保持三张表数据一致(不过一般不会允许用户这样操作),可使用外键约束来保证其数据完整性。
解决方案 »
- 求救 !!!SetupDiEnumDeviceInterfaces调用返回总为0!
- msflexgrid问题,在Scroll事件中如何计算窗口内的row值
- 问一个关于Shell对象的BrowseForFolder方法的问题
- 请教高手:DHTMLEdit控件怎么模拟鼠标的选择动作?
- 郁闷之中,不爽,100分向各位大侠求救关于在vb中用代码进行sql server数据库的连结问题!
- access向sql server转变的问题
- 关于交叉查询的问题
- read me 是怎么做的,怎么打开记事本??
- 请问接口里可不可以定义事件?
- 谁能告诉我学VB都学哪些内容?
- 请告诉我:VB的前途在那里?
- 又有关于ACTIVEX DLL的问题,挺有深度和实际实践意义的。
使用存储过程:
create proc ProcName
(@参数1,@参数2……,@操作类型)
as
if @操作类型="I"
begin
insert into table1 values(……)
insert into table2 values(……)
insert into table3 values(……)
end
if @操作类型="U"
begin
……
end
if @操作类型="D"
begin
……
end
go
而当“U”的时候进行批量更新也OK吗?
尽量把一次对数据库的操作用一个存储过程完成以提高效率。
用存储过程分别对三张表进行update当然可以都批量进行。
实际开发中一般不常用trigger(一般只有在程序后期制作打补丁的时候用trigger来应急),使用trigger会降低一些效率。
在传统的C/S开发方式中使用存储过程的机会较多,除了对数据的一些基本操作外,对数据操作的业务规则解释也可以由存储过程来完成。不过使用三层式结构开发的程序中一般业务规则已放到中间层处理,使用存储过程的机会相对减少。
那么在ASP程序中如何调用你所creat的存储过程ProcName呢?