返回顶部
首页 > 资讯 > 数据库 >sql触发器如何使用
  • 121
分享到

sql触发器如何使用

2024-04-02 19:04:59 121人浏览 八月长安
摘要

这篇文章给大家分享的是有关sql触发器如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  sql中的触发器是对某个表进行操作时而触发的某种条件,可以用CREATE语句创建触

这篇文章给大家分享的是有关sql触发器如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  sql中的触发器是对某个表进行操作时而触发的某种条件,可以用CREATE语句创建触发器,DROP语句删除触发器,ALTER语句禁用触发器等

  触发器

  在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。

  CREATE TRIGGER tr_update_Stock --自动采购触发器

  ON T_Product

  FOR update

  AS

  IF (update(Stock)) --判断stock字段是否更新

  BEGIN

  --查询出库存低于下限的产品近一个月的消耗量

  --创建临时表

  IF object_id('[tempdb].[dbo].##table1') IS NOT NULL --判断临时表#tmp是否存在,存在则删除

  DROP TABLE ##table1

  SELECT * INTO ##table1 FROM (SELECT row_number() OVER (ORDER BY ProductID) AS rowNo,c.ZNumber - c.Stock AS purchaseNum,* FROM (

  SELECT ProductID,SUM(s.Numbers) ZNumber,p.Stock,SUM(s.OutMoney) ZMoney,p.Price

  FROM [dbo].[T_StorageOut] t inner join[dbo].[T_StorageRelation] s

  ON t.StorageOutID=s.StorageOutID inner join T_Product p ON s.ProductID=p.Id

  WHERE t.MakerTime between Convert(VARCHAR,DATEADD(MONTH,-1,GETDATE()),23) and Convert(VARCHAR,GETDATE(),23) and ProductID in (SELECT Id FROM V_ProductSupplierInfo where (Stock-StockLowerLimit)<0) group="" by="" DDD="" declare="" purchasenum="" price="0,@ZpurchaseTotal=0" totalmoney="0,@purchaseNum" zpurchasetotal="" int="" select="" purchasenumber="JH" dopurchaseid="" dopurchasetime="" purchasetotal="" purchaseprice="" purchasestate="" purchasetype="" set="" jh20171031092322="" stockproductid="" dpurchaseprice="" curindex="1" rowcount="" otcount="" ptcount="" from="" table1="">0)

  BEGIN

  WHILE @curIndex <= @rowCount   BEGIN   --查询出第一行数据的采购数量,单价,产品id   SELECT @purchaseNum = purchaseNum,@Price = Price,@StockProductId =ProductID FROM ##table1 WHERE rowNo = @curIndex   --采购总金额   SET @totalMoney = @totalMoney + @purchaseNum * CONVERT (INT,@price)   --采购总数量   SET @ZpurchaseTotal =@ZpurchaseTotal + @purchaseNum   --单个产品的采购金额   SET @DPurchasePrice=@purchaseNum * CONVERT (INT,@price)   IF object_id('[tempdb].[dbo].#PTable') IS NOT NULL --判断临时表#tmp是否存在,存在则删除   DROP TABLE #PTable   IF object_id('[tempdb].[dbo].#OTable') IS NOT NULL --判断临时表#tmp是否存在,存在则删除   DROP TABLE #OTable   --根据产品id查询出包含该产品的采购单已全部审批   SELECT * INTO #PTable FROM (SELECT PurchaseState FROM [dbo].[T_Purchase_Order] WHERE PurchaseNumber in(SELECT PurchaseOrderId FROM [dbo].[T_Purchase_OrderDetails] WHERE StockProductId=@StockProductId) and PurchaseState=0) AS a   --根据产品id查询出包含该产品的订单已全部入库   SELECT * INTO #OTable FROM (SELECT OrderState FROM T_Order WHERE OrderNumber in(SELECT OrderNumber FROM T_OrderDetails WHERE ProductId=@StockProductId) and OrderState=0) AS c   SELECT @PTCount = COUNT(1) FROM #PTable   SELECT @OTCount = COUNT(1) FROM #OTable   IF (@PTCount=0) --已全部审批   BEGIN   IF(@OTCount=0) --=0表示包含该产品的订单均已入库,可以生成新的   BEGIN   INSERT INTO [dbo].[T_Purchase_OrderDetails] VALUES(@PurchaseNumber,@StockProductId,@purchaseNum,@DPurchasePrice)   END   END   SET @curIndex = @curIndex + 1   END   END   set @DopurchaseId = 16646 --自动生成   set @DopurchaseTime=Convert(NVARCHAR,getdate(),23) --当前时间 2017-10-31   set @PurchaseTotal =@ZpurchaseTotal   set @PurchasePrice =@totalMoney   set @PurchaseState =0 --未审核   set @PurchaseType = 2 --自动生成   --变量赋值完成,对采购单做添加操作   IF (@PTCount=0)   BEGIN   INSERT INTO T_Purchase_Order VALUES(@PurchaseNumber,@DopurchaseId,@DopurchaseTime,@PurchaseTotal,@PurchasePrice,@PurchaseState,@PurchaseType)   END   END   这是一个自动采购的触发器,主要需要注意的触发条件,以及临时表的作用。   触发器的使用   创建触发器   CREATE TRIGGER tr_update_Stock   删除触发器   DROP TRIGGER tr_update_Stock   禁用

  ALTER TABLE trig_example DISABLE TRIGGER trig1

  Go

  恢复

  ALTER TABLE trig_example ENABLE TRIGGER trig1

  GO

  禁用某个表上的所有触发器

  ALTER TABLE 你的表 DISABLE TRIGGER all

  启用某个表上的所有触发器

  ALTER TABLE 你的表 enable TRIGGER all

  禁用所有表上的所有触发器

  exec sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER all'

  启用所有表上的所有触发器

  exec sp_msforeachtable 'ALTER TABLE ? enable TRIGGER all'

感谢各位的阅读!关于“sql触发器如何使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: sql触发器如何使用

本文链接: https://lsjlt.com/news/55216.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • sql触发器如何使用
    这篇文章给大家分享的是有关sql触发器如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  sql中的触发器是对某个表进行操作时而触发的某种条件,可以用CREATE语句创建触...
    99+
    2024-04-02
  • Sql Server中如何使用触发器
    本篇文章为大家展示了Sql Server中如何使用触发器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Sql Server为每个触发器都创建了两个专用表:Inser...
    99+
    2024-04-02
  • 怎么使用sql触发器
    本篇文章给大家分享的是有关怎么使用sql触发器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  sql中的触发器是对某个表进行操作时...
    99+
    2024-04-02
  • sql如何创建触发器
    要创建触发器,您可以使用 SQL 的 CREATE TRIGGER 语句。以下是创建触发器的基本语法: CREATE TRIGGER...
    99+
    2023-10-26
    sql
  • SQL触发器定义与使用
    目录触发器简介触发器的创建及调用触发器的分类及执行顺序触发器的删除触发器的优缺点比如:现需要向学生表中插入新的学生数据。但在插入学生数据的时,需要同时检查老师表里的数据。如果插入学生的老师不在老师表里,则先向老师表中插入...
    99+
    2023-01-05
    SQL触发器 SQL触发器使用 SQL触发器定义
  • SQL SERVER触发器怎么使用
    SQL Server触发器可以在数据库中的表上定义,当满足特定条件时,触发器会自动执行一些操作。以下是使用SQL Server触发器...
    99+
    2023-08-18
    SQL SERVER
  • 如何使用mysql触发器
    小编这次要给大家分享的是如何使用mysql触发器,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。例子:创建触发器,记录表的增、删、改操作记录//创建user表; DRO...
    99+
    2024-04-02
  • MySQL触发器如何使用
    本文小编为大家详细介绍“MySQL触发器如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL触发器如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MySQL&mdash;触发器将两个关...
    99+
    2023-07-05
  • SQL触发器
    翻看博客,发现居然没有触发器使用说明,现补上。  触发器触发的时候两个特殊的表:    插入表(instered表):Inserted表的数据是插入或是修改后的数据    删除表(deleted表...
    99+
    2024-04-02
  • SQL触发器的使用及语法
    定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为...
    99+
    2015-02-12
    SQL触发器的使用及语法 数据库入门 数据库基础教程 数据库 mysql
  • sql触发器的使用有哪些
    SQL触发器是数据库中的一种特殊对象,它们可以在数据库中的某个特定事件发生时自动执行一系列的操作。以下是SQL触发器的一些常见使用场...
    99+
    2023-10-25
    sql
  • sql触发器的使用及语法
    触发器是一种数据库代码,在特定事件(插入、更新、删除)发生时自动执行。触发器的语法包含触发器名称、表名称和触发时机(before/after)以及事件类型(insert/update/d...
    99+
    2024-04-13
  • sql数据库触发器如何写
    编写SQL数据库触发器可以使用以下语法: CREATE TRIGGER trigger_name {BEFORE | AFTER} ...
    99+
    2023-10-24
    sql数据库
  • SQL触发器的应用
    SQL触发器的作用及具体代码示例 概述:SQL触发器是一种特殊的存储过程,它是在数据库中的数据发生变化时自动执行的一段代码。触发器可以在插入(INSERT)、更新(UPDATE...
    99+
    2024-02-22
    sql 触发器 作用
  • sql触发器怎么用
    sql 触发器是数据库对象,用于在特定事件(插入、更新、删除)发生时执行一系列动作。其用途包括:强制执行业务规则自动执行任务实现级联更新或删除审计数据更改 SQL 触发器的用途 SQL...
    99+
    2024-05-30
  • SQL Server触发器中表的特定字段更新时如何触发Update触发器
    SQL Server触发器中表的特定字段更新时如何触发Update触发器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获...
    99+
    2024-04-02
  • 如何使用数据库触发器
    这篇文章主要介绍“如何使用数据库触发器”,在日常操作中,相信很多人在如何使用数据库触发器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用数据库触发器”的疑惑有所帮助!接...
    99+
    2024-04-02
  • 如何在Oracle中使用触发器
    如何在Oracle中使用触发器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。触发器类型触发器在数据库里以独立的对象存储,它与存储过程和函数...
    99+
    2024-04-02
  • Oracle的触发器trigger如何使用
    本篇内容主要讲解“Oracle的触发器trigger如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的触发器trigger如何使用”吧!一、触发器定义Oracle触发器是使用者...
    99+
    2023-06-29
  • 如何深入浅析SQL Server 触发器
    这篇文章将为大家详细讲解有关如何深入浅析SQL Server 触发器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。触发器是一种特殊类型的存储过程,它不同于之...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作