存储过程和触发器

生活学习2021-06-21 14:14:49admin2

PROCEDUREp_book1PROCEDURE p_book2书名='大学英语'EXEC p_book2图书编号=@x'001105'varchar(20)书籍表 where 书名=@c1EXEC p_book4 '大学语文'

1. 试述存储过程和触发器的异同之处。

1>触发器也是一种存储过程,只不过是通过事件触发的而你所指的存储过程,是用户调取的2>触发器有两张内置的表inserted和deleted(新数据表和旧数据表)而存储过程没有3>存储过程可以执行一些不确定性的执行,触发器不可以执行不确定性的执行(我遇到过这个情况,具体记不清了好象是EXEC('SQL语句'),可以去搜搜相关资料)

解答触发器与存储过程?

1、

createtrigger tgr_Topic_insert

on classes

    for insert --插入触发

as

    update Section set SClickCount=SClickCount+1;

go

2、

 

SET NOCOUNT ON;DECLARE @count intdeclare @strSql varchar(max)SET @count = 0set @strSql=''WHILE @count <50BEGINif(@count % 10 =0)beginexec(@strSql)set @strSql=''endelsebeginset @strSql=@strSql+'insert into tb_test values('+ str(rand()*100)+','+str(rand()*100)+')'endSET @count = @count +1END

Section 表设计不合理,帖子数量和点击率应该用视图查询得到。否则,就必须增加删除,屏蔽等触发器,如果论坛用户较多,并发量较大时,触发器会降低数据库性能,且出现实际数据不吻合的情况。至于临时登录用户,可以利用用户访问网站的日期和时间生成,没必要在数据库中事先生成。

相关推荐

猜你喜欢

大家正在看

换一换