sql 触发器

触发器基于表的操作,对表进行增删改时添加触发器。以下sql语句:当对表进行修改操作时,触发器执行,修改表中Inventory的值。(if判断条件-触发器不再执行,必须有出口否则触发器无限执行)

--创建触发器 触发器名称
CREATE TRIGGER [dbo].[tr_Sduept_Inventory_Update]
   ON  [dbo].[Inventory]
   AFTER UPDATE --修改操作的触发器
AS 
BEGIN
	--修改的触发器
	--1 delete 2 insert
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	DECLARE @cInvCode NVARCHAR(60),@iInvSPrice FLOAT,@iInvNCost FLOAT;
	
	--SELECT * FROM Deleted;
	
	SELECT @cInvCode=cInvCode,@iInvSPrice=Inserted.iInvSPrice,@iInvNCost = Inserted.iInvNCost FROM Inserted;
	IF	(ISNULL(@iInvSPrice,0)<>ISNULL(@iInvNCost,0))
	BEGIN
		--修改表中字段值
		UPDATE Inventory SET iInvSPrice=iInvNCost WHERE cInvCode=@cInvCode;
		--将修改前的数据插入日志表中
		INSERT INTO Sduept_Inventory_iInvPrice_Log(cInvCode,iInvSPrice,iInvNCost,CreatedOn,CreatedUser)
		SELECT Inserted.cInvCode,In
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL触发器是一种特殊的存储过程,它在特定的数据库事件发生时自动执行。在物联网大赛中,SQL触发器可以用于监测设备数据的变化,从而自动触发某些操作,例如发送警报、更新设备状态等。 以下是一个简单的示例,演示如何在SQL Server中创建一个触发器,以在设备状态更新时发送电子邮件通知: ``` CREATE TRIGGER tr_device_status_update ON dbo.Device AFTER UPDATE AS BEGIN IF UPDATE(Status) BEGIN DECLARE @device_id INT DECLARE @status VARCHAR(50) SELECT @device_id = i.DeviceID, @status = i.Status FROM inserted i INNER JOIN deleted d ON i.DeviceID = d.DeviceID IF (@status = 'Offline') BEGIN EXEC msdb.dbo.sp_send_dbmail @profile_name = 'NotificationEmail', @recipients = '[email protected]', @subject = 'Device Offline', @body = 'Device ' + CAST(@device_id AS VARCHAR(10)) + ' is now offline.' END END END ``` 在此示例中,我们创建了一个名为tr_device_status_update的触发器,它将在Device表中的任何更新操作之后自动触发。我们使用IF UPDATE(Status)语句来检查状态列是否已更改,然后使用INSERTED和DELETED表来获取更新前后的设备状态。如果设备状态从“在线”更改为“离线”,则触发器将使用sp_send_dbmail存储过程发送电子邮件通知给管理员。 这只是一个简单的示例,你可以根据自己的需求和数据库平台的不同,创建更复杂的SQL触发器来实现物联网应用程序中的自动化任务和通知。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值