请问存储过程与触发器关系?

生活学习2021-06-21 14:20:32admin2

存储过程需要调用才执行里面的sql语句。触发器是设置好触发条件,条件达到时自动运行里面的sql语句,比如对a表进行更新(update)操作时,相应的触发器就会运行。

触发器可以理解成一种特定的存储过程和一般的存储过程相比,其调用时机不同,是在满足特定的情况下被调用,比如表的数据被修改时(表级触发器)或执行一些DDL时(数据库级触发器)

关于存储过程和触发器

create table A --商户表( ID_a int identity(1,1), sales varchar(50))create table B --物品表( ID_b int identity(1,1), goods varchar(50),)create table C --关系表( ID_c int identity(1,1), ID_a int, ID_b int, price money)create table save_table --保存表( ID_save int identity(1,1), ID_b int, price_old money, price_new money, update_time datetime)--存储过程检索指定商品在不同商店的销售价格和平均价格create proc findprice@goods varchar(50)as--不同商店销售价格select A.sales,B.goods,C.price from C join B on C.ID_b=B.ID_b join A on A.ID_a=C.ID_a where B.goods=@goods--商品平均值select avg(C.price) from C join B on C.ID_b=B.ID_b join A on A.ID_a=C.ID_a where B.goods=@goodsgo--触发器设计实现,当修改商品价格时,将修改前的值、修改后的值和修改日期保存到一个表中供以后查询create trigger findtriggeron Cfor updateasdeclare @price_old money,@price_new money,@ID_b intselect @ID_b=ID_b,@price_new=price from insertedselect @price_old=price from deletedinsert into save_table(ID_b,price_old,price_new,update_time)values(@ID_b,@price_old,@price_new,GETDATE())go

具体找例子啊。找相应数据库的存储过程和触发器的例子,再按你现在的要求写呗。写程序就是这样,有思路,一定会写出来的。

相关推荐

猜你喜欢

大家正在看

换一换