广告
返回顶部
首页 > 资讯 > 数据库 >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://www.lsjlt.com/news/55216.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql触发器如何使用
    这篇文章给大家分享的是有关sql触发器如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  sql中的触发器是对某个表进行操作时而触发的某种条件,可以用CREATE语句创建触...
    99+
    2022-10-18
  • Sql Server中如何使用触发器
    本篇文章为大家展示了Sql Server中如何使用触发器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Sql Server为每个触发器都创建了两个专用表:Inser...
    99+
    2022-10-18
  • 怎么使用sql触发器
    本篇文章给大家分享的是有关怎么使用sql触发器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  sql中的触发器是对某个表进行操作时...
    99+
    2022-10-18
  • SQL触发器
    翻看博客,发现居然没有触发器使用说明,现补上。  触发器触发的时候两个特殊的表:    插入表(instered表):Inserted表的数据是插入或是修改后的数据    删除表(deleted表...
    99+
    2022-10-18
  • 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
  • SQL触发器的使用及语法
    定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为...
    99+
    2015-02-12
    SQL触发器的使用及语法 数据库入门 数据库基础教程 数据库 mysql
  • sql触发器的使用有哪些
    SQL触发器是数据库中的一种特殊对象,它们可以在数据库中的某个特定事件发生时自动执行一系列的操作。以下是SQL触发器的一些常见使用场...
    99+
    2023-10-25
    sql
  • SQL-Instead of 触发器
    定义及优点         INSTEAD OF触发器指定执行触发器而不是执行触发 的SQL 语句,从而替代触发语句的操作。        在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 I...
    99+
    2018-12-24
    SQL-Instead of 触发器
  • SQL Server触发器中表的特定字段更新时如何触发Update触发器
    SQL Server触发器中表的特定字段更新时如何触发Update触发器,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获...
    99+
    2022-10-18
  • sql数据库触发器如何写
    编写SQL数据库触发器可以使用以下语法: CREATE TRIGGER trigger_name {BEFORE | AFTER} ...
    99+
    2023-10-24
    sql数据库
  • SQL Server 创建触发器
    -- TABLE INSERTVAL UPDATEVAL if (object_id('DATA_SYNC_FH_DJ','TR') is&nbs...
    99+
    2022-10-18
  • SQL Server 触发器详情
    目录1、什么是触发器2、 DML触发器分为2.1 after触发器(之后触发)2.2 instead of 触发器 (之前触发)3、 创建触发器3.1 创建insert类型...
    99+
    2022-11-12
  • SQL SERVER触发器详解
    目录一、触发器的定义二、触发器分类三、创建触发器1、创建insert类型的触发器2、delete触发器3、update触发器4、instead of触发器DDL触发器触发器...
    99+
    2022-11-13
  • SQL SERVER触发器详解
    SQL Server触发器是一种特殊的存储过程,它是与表相关联的,当表中插入、更新或删除数据时,触发器会自动执行。触发器可以用于强制...
    99+
    2023-08-17
    SQL SERVER
  • 如何深入浅析SQL Server 触发器
    这篇文章将为大家详细讲解有关如何深入浅析SQL Server 触发器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。触发器是一种特殊类型的存储过程,它不同于之...
    99+
    2022-10-19
  • 如何使用mysql触发器
    小编这次要给大家分享的是如何使用mysql触发器,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。例子:创建触发器,记录表的增、删、改操作记录//创建user表; DRO...
    99+
    2022-10-18
  • MySQL触发器如何使用
    本文小编为大家详细介绍“MySQL触发器如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL触发器如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MySQL&mdash;触发器将两个关...
    99+
    2023-07-05
  • SQL触发器的用途有哪些
    SQL触发器是一种特殊的存储过程,它会在某种特定的数据库事件发生时自动执行。其主要用途包括: 数据完整性约束:触发器可用于强制执...
    99+
    2023-10-26
    SQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作