SQL 触发器语句

weixin_44253967 2018-12-24 10:07:32
SQL 触发器语句
判断 当表更新 或者插入行的时候,判断 表中的刚插入或更新的A列的值,如果这个值大于0.2 就用B列的值去减去A列的值,然后反写到C列。 请问这种触发器如何编写
...全文
272 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-12-26
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
IF OBJECT_ID('trig_t_I') IS NOT NULL DROP TABLE trig_t_I
GO
CREATE TABLE t(
	id INT IDENTITY(1,1) PRIMARY KEY,
	A DECIMAL(10,2),
	B DECIMAL(10,2),
	C DECIMAL(10,2)
)
GO
-- =============================================
-- Author:		yenange
-- Create date: 2018-12-20
-- Description:	
-- =============================================
CREATE TRIGGER trig_t_I 
   ON  dbo.t 
   AFTER INSERT,UPDATE
AS 
BEGIN
	SET NOCOUNT ON;
	IF EXISTS(SELECT 1 FROM INSERTED WHERE A>0.2 AND C!=B-A)
	BEGIN
		UPDATE t 
		SET C=tt.B-tt.A
		FROM INSERTED AS tt
		WHERE t.id=tt.id AND t.A>0.2 AND t.C!=t.B-t.A
	END
END
GO
 
SET NOCOUNT ON
INSERT INTO t VALUES (0.3,5,2)
INSERT INTO t VALUES (0.1,4,1)

 
SELECT * FROM t
/*
id	A	    B	     C
--  ------  ------- ---
1	0.30	5.00	4.70
2	0.10	4.00	1.00
 */
 
weixin_44253967 2018-12-26
  • 打赏
  • 举报
回复
别沉啊别沉啊

11,848

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧