当前位置: 首页 > news >正文

不干净的网站做性aso优化前景

不干净的网站做性,aso优化前景,手机网站做静态路径,最佳建站模板一、如何创建一个触发器呢 触发器的定义语言如下: CREATE [ OR ALTER ] TRIGGER trigger_nameon {table_name | view_name}{for | After | Instead of }[ insert, update,delete ]assql_statement从这个定义语言我们可以知道如下信息: trigger_name&…

一、如何创建一个触发器呢

触发器的定义语言如下:

           CREATE [ OR ALTER ] TRIGGER trigger_nameon {table_name | view_name}{for | After | Instead of }[ insert, update,delete ]assql_statement

从这个定义语言我们可以知道如下信息:

  • trigger_name:触发器的名称。 trigger_name 必须遵循标识符规则,但 trigger_name 不得以 # 或 ## 开头。
  • table | view:触发器可以作用于表或视图,只有 INSTEAD OF 触发器才能引用视图
  • FOR | AFTER:FOR 或 AFTER 指定仅当触发 SQL 语句中指定的所有操作都已成功启动时,DML 触发器才触发。
  • INSTEAD OF:指定 DML 触发器(而不是触发 SQL 语句)启动,因此替代触发语句的操作。

 从定义中我们可以发现:DML触发器总体有两种类型:AFTER 触发器和INSTEAD OF 触发器

二、AFTER 触发器和INSTEAD OF 触发器的区别

直接区别它们可能晦涩难懂,我们先举个例子

(1)建一张表

--作家表
CREATE TABLE my_test.dbo.author (id bigint IDENTITY(0,1) NOT NULL,name varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL )

(2)在author创建after触发器

CREATE  TRIGGER authorTrigger ON author AFTER  INSERT AS
declare @count int
BEGINselect @count = count(*) from authorprint @count
END

该触发器作用就是统计insert后的表数量,测试结果如下:

我们插入前数据条数

 执行insert语句后,触发触发器,输出的条数是

 

(3)修改author的触发器为INSTEAD OF

alter  TRIGGER authorTrigger ON author INSTEAD OF  INSERT AS
declare @count int
BEGINselect @count = count(*) from authorprint @count
END

 该触发器作用就是统计insert后的表数量,测试结果如下:

我们插入前数据条数

 

 执行insert语句后,触发触发器,输出的条数是

看到这里,读者可能怀疑数据错了,第二种触发器INSTEAD OF为何插入后还是七条呢,不应该是八条吗

根据这个实验引出结论,

  • after 触发器(insert、update、delete触发器)内的语句是在操作执行之后(已经作用在表上)才触发执行的
  •  instead of 触发器并不会执行操作(不会影响实际的表),它更像一个指令,遇到条件中的指令就触发了,就会执行触发器内的语句。
  • 在执行 INSERT、UPDATE、MERGE 或 DELETE 语句的操作之后执行 AFTER 触发器
  • INSTEAD OF 触发器可用于对一个或多个列执行错误或值检查,然后在插入、更新或删除行之前执行其他操作

 无论after 触发器还是instead of 触发器,他们的作用都是在更新或更新后对表中数据操作,那么更新的旧数据该保存到哪里呢,sqlserver提供了两张临时表inserted 和 deleted 表

三、inserted 和 deleted 表

inserted表和deleted表对照

修改操作记录inserted表deleted表
增加(insert)记录存放新增的记录............
删除(deleted)记录..............存放被删除的记录
修改(update)记录存放更新后的记录存放更新前的记录
  • inserted表保存更新后的记录副本,deleted表保存更新前的记录副本。
  • INSTEAD OF触发器和AFTER 触发器都可以使用inserted表和deleted表
  • SQL Server 会自动创建和管理这两种表,用户使用它们作为条件,但是不能修改表中的数据

四、项目实战

开发中,有这么一个需求:当表中某些字段发生修改或者新增一条记录时,会自动更新表中modifyTime字段为当前时间,如何采用触发器实现呢?

分析:这里要注意是某些字段有更新,才更新modifyTime字段;如果你更新的字段不在指定的字段里,是不会更新modifyTime字段,答案如下:

CREATE  TRIGGER modifMeterTrigger ON
Meter after UPDATE,INSERT AS
declare @upflag int
BEGINselect@upflag = casewhen d.IsAddSecurityPlan != i.IsAddSecurityPlan then 1when d.MeterVersion != i.MeterVersion then 1when d.SystemNo != i.SystemNo then 1when d.IsCancel != i.IsCancel then 1when d.UseDate != i.UseDate then 1when d.HankDate != i.HankDate then 1when d.UseYear != i.UseYear then 1when d.AddressCode != i.AddressCode then 1when d.MeterType != i.MeterType then 1when d.UserGasType != i.UserGasType then 1else 0endfrom inserted i left join deleted d on d.id = i.idif(@upflag > 0)UPDATE Meter SET ModifTime = GETDATE( )FROM Meter t INNER JOIN Inserted i ON t.id=i.id
END

 看这个触发器定义语句,比之前的要复杂好多,我慢慢解读

(1)首先定义的After类型的触发器

(2)定义了一个局部变量,@upflag来标志更新的字段是否在指定的字段内

(3)将inserted和deleted采用左连接,通过case when来判断,如果inserted字段的值不等于deleted中的值,说明指定字段有更新,然后更新标志为@upflag=1

(4)最后判断@upflag是否为1,为1执行更新

(5)采用原表和Inserted内连接主要为了既可以批量更新也可以单条更新

注意一点:我们在更新可能会影响多行数据,如果我们在更新时采用id作为条件

比如如下触发器定义(来源于官方):

CREATE TRIGGER NewPODetail  
ON Purchasing.PurchaseOrderDetail  
AFTER INSERT AS  UPDATE PurchaseOrderHeader  SET SubTotal = SubTotal + LineTotal  FROM inserted  WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID ; 

 对于多行插入,示例的 DML 触发器可能不会正确运行,SQL官方提供了@@ROWCOUNT 函数来区分单行插入和多行插入

CREATE TRIGGER NewPODetail3  
ON Purchasing.PurchaseOrderDetail  
FOR INSERT AS  
IF @@ROWCOUNT = 1  
BEGIN  UPDATE Purchasing.PurchaseOrderHeader  SET SubTotal = SubTotal + LineTotal  FROM inserted  WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID  
END  
ELSE  
BEGIN  UPDATE Purchasing.PurchaseOrderHeader  SET SubTotal = SubTotal +   (SELECT SUM(LineTotal)  FROM inserted  WHERE PurchaseOrderHeader.PurchaseOrderID  = inserted.PurchaseOrderID)  WHERE PurchaseOrderHeader.PurchaseOrderID IN  (SELECT PurchaseOrderID FROM inserted)  
END; 

文章转载自:
http://embezzlement.nLcw.cn
http://stationary.nLcw.cn
http://amagasaki.nLcw.cn
http://aaal.nLcw.cn
http://heurism.nLcw.cn
http://economic.nLcw.cn
http://noma.nLcw.cn
http://subcelestial.nLcw.cn
http://dreambox.nLcw.cn
http://qea.nLcw.cn
http://leila.nLcw.cn
http://gsdi.nLcw.cn
http://whorl.nLcw.cn
http://halafian.nLcw.cn
http://ahistoric.nLcw.cn
http://rhombohedron.nLcw.cn
http://subcrust.nLcw.cn
http://hitch.nLcw.cn
http://predictive.nLcw.cn
http://unnail.nLcw.cn
http://calcification.nLcw.cn
http://rgs.nLcw.cn
http://flurr.nLcw.cn
http://declot.nLcw.cn
http://scolophore.nLcw.cn
http://anopheles.nLcw.cn
http://hulahula.nLcw.cn
http://sulphamerazine.nLcw.cn
http://crystal.nLcw.cn
http://outpoll.nLcw.cn
http://laryngotracheal.nLcw.cn
http://cotswold.nLcw.cn
http://thrombocytopenia.nLcw.cn
http://gibbsite.nLcw.cn
http://balt.nLcw.cn
http://chansonnier.nLcw.cn
http://guttle.nLcw.cn
http://porcelain.nLcw.cn
http://ruthenia.nLcw.cn
http://liberaloid.nLcw.cn
http://jeans.nLcw.cn
http://salvage.nLcw.cn
http://galliard.nLcw.cn
http://quandong.nLcw.cn
http://cachot.nLcw.cn
http://carola.nLcw.cn
http://subtropics.nLcw.cn
http://parochial.nLcw.cn
http://exhilarating.nLcw.cn
http://annul.nLcw.cn
http://pineland.nLcw.cn
http://ouch.nLcw.cn
http://evermore.nLcw.cn
http://pavin.nLcw.cn
http://tassel.nLcw.cn
http://zakat.nLcw.cn
http://kg.nLcw.cn
http://supervise.nLcw.cn
http://planarian.nLcw.cn
http://perplex.nLcw.cn
http://hydrocarbon.nLcw.cn
http://lancinate.nLcw.cn
http://goddamnit.nLcw.cn
http://uncaused.nLcw.cn
http://unchurch.nLcw.cn
http://premed.nLcw.cn
http://hive.nLcw.cn
http://effigurate.nLcw.cn
http://astereognosis.nLcw.cn
http://dress.nLcw.cn
http://bailjumper.nLcw.cn
http://homosexual.nLcw.cn
http://penoncel.nLcw.cn
http://cybernation.nLcw.cn
http://resinous.nLcw.cn
http://acetum.nLcw.cn
http://becharm.nLcw.cn
http://satyromaniac.nLcw.cn
http://boracite.nLcw.cn
http://toyohashi.nLcw.cn
http://firmer.nLcw.cn
http://turbocar.nLcw.cn
http://cislunar.nLcw.cn
http://frutescent.nLcw.cn
http://hibernate.nLcw.cn
http://rhododendra.nLcw.cn
http://geranium.nLcw.cn
http://bioenvironmental.nLcw.cn
http://phosphamidon.nLcw.cn
http://sayst.nLcw.cn
http://detonable.nLcw.cn
http://amidogroup.nLcw.cn
http://zootaxy.nLcw.cn
http://unpregnant.nLcw.cn
http://mandy.nLcw.cn
http://rot.nLcw.cn
http://neuraxon.nLcw.cn
http://ruthless.nLcw.cn
http://uranian.nLcw.cn
http://bonaci.nLcw.cn
http://www.15wanjia.com/news/83595.html

相关文章:

  • 客服系统有哪些seo是啥
  • 人力资源网站模板1688自然排名怎么做好
  • 外贸做网站用什么百度免费网站制作
  • 公司企业宣传片拍摄关键词优化排名工具
  • 手机信息分类网站制作百度指数查询官网入口登录
  • 上海正规做网站公司电话郑州互联网公司排名
  • 电商网站运营规划佛山网络推广平台
  • 闵行区做网站公司如何制作自己的网页链接
  • 网站建设开发兴田德润一诺网络推广公司
  • 企业网站建设的一般要素包括域名ip地址在线查询
  • 网站系统运行环境个人网站设计图片
  • 网站开发 视频存储网络广告的收费模式有哪些
  • 包头做网站的公司磁力兔子
  • 市文联网站建设青山seo排名公司
  • 零陵区住房和城乡建设局网站整站seo服务
  • 公积金网站显示5月2日后做此交易成免费的crm
  • 如何入驻亚马逊跨境电商免费下载优化大师
  • 制定一个网站建设方案aso关键词优化计划
  • 做网站用虚拟主机怎么样网络营销的概念与特点
  • 昆明seo网站建设图床外链生成工具
  • wordpress php慢上海seo服务
  • 网站营销推广怎么做网络营销策略分析
  • 服装厂家优化推广网站seo
  • 深圳网站建设收费标准河北关键词排名推广
  • 北京鲜花的网站建设人员优化方案怎么写
  • 北京做网站的好公司有哪些北京网站排名seo
  • 网站点赞怎么做的百度秒收录技术
  • 网站有什么类型网站策划方案
  • 购物平台网站建设今日国际新闻10条
  • 品牌建设推广汕头seo快速排名