数据库中有一张会员表,有一张订单表,会员表的ID列是订单表的会员ID列的外键。
现在,要求订单表中某个会员的数据插入、更新、删除时,会员表中的对应会员的总的订单额,就作相应的增减。
这个触发器是怎么写的?
------解决思路----------------------
触发器的基本写法如下:
CREATE TRIGGER 你的触发器名字 ON 表名 AFTER 动作 AS
BEGIN
// sql语句
END
GO
动作就是INSERT、UPDATE、DELETE三种,触发后自动生成inserted和deleted两条记录,该记录结构和你的表结构相同
------解决思路----------------------
这种最好由程序显示控制,触发器有太多不可控因素
------解决思路----------------------
你怎么知道触发器执行成功了没有呢?然后到底什么时候执行结束的呢?你的程序根本没办法知道
------解决思路----------------------
从数据库设计看,保存会员的总订单额不是好的设计。因为它违反了数据库第三常规化(非鍵屬性互相之間應該是無關的)。
第三常规化,用白话说,就是不要重复数据,因为重复数据会造成分歧。
因为‘总订单额’是可以从会员订单表计算出来的,它就是重复数据。
建议你不要用‘触发器’去消除数据分歧,而是采用类似视图的方式来得到统计数字。
如果是本地编辑,你在本地根据差额来计算总订单额。如果需要,提交后再刷新总订单额就可以了。
------解决思路----------------------
目测LZ在做毕业设计或者项目实战的工作,才会搞这样的需求。不然谁敢这么搞,消费记录还要保留呢