sqlserver触发器如何知道当前处理啥类型的触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver触发器如何知道当前处理啥类型的触发相关的知识,希望对你有一定的参考价值。

ALTER TRIGGER Accessory_T ON dbo.Accessory
AFTER UPDATE, DELETE, INSERT
AS
--获取更改的ID
DECLARE @ID NVARCHAR(50)
SELECT @ID = MaterialID
FROM deleted
--插入到记录表当中
INSERT INTO dbo.SyncStatus
( ID ,
TableName ,
PrimaryKey ,
PrimaryKeyName ,
State

)
VALUES ( NEWID() , -- ID - nvarchar(50)
'Accessory' , -- TableName - nvarchar(50)
@ID , -- PrimaryKey - nvarchar(50)
'MaterialID' , -- PrimaryKeyName - nvarchar(50)
'处理的什么类型(update,insert,delete)' -- State - nvarchar(50)
)

我想在insert update delete执行的时候插入记录,但是我想写在一个触发器里面,请问如何知道当前是什么触发呢? 我一共就25财富值...等下再给5的财富值吧.谢谢大家了.

参考技术A 没有直接的方法,你只能首先判断inserted、deleted表是否都有数据,根据两个表是否都有数据来综合判断
当inserted有数据,deleted没数据,说明是INSERT触发
当inserted没有数据,deleted有数据,说明是DELETE触发当inserted和deleted都有数据,说明是UPDATE触发本回答被提问者和网友采纳
参考技术B INSERT/UPDATE/DELETE行为判断 的触发器例子代码

对于 FOR INSERT,UPDATE,DELETE 的
通过 查询 inserted 与 deleted 的记录 来判断

CREATE TRIGGER AfterAllTest
ON test_trigger_table
FOR INSERT,UPDATE,DELETE
AS
BEGIN
PRINT('AFTER ALL');
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('INSERTING');
END;
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('UPDATING');
END;
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
PRINT('DELETING');
END;
END;
go

1> INSERT INTO test_trigger_table(id, name) VALUES (1, 'ABC');
2> UPDATE test_trigger_table SET name = 'XYZ' WHERE id = 1;
3> DELETE FROM test_trigger_table WHERE id = 1;
4> go
AFTER ALL
INSERTING

(1 行受影响)
AFTER ALL
UPDATING
AFTER ALL
DELETING
1>

在按钮 B 的触地期间触发按钮 A 上的触地

【中文标题】在按钮 B 的触地期间触发按钮 A 上的触地【英文标题】:Trigger a TouchDown on Button A during TouchDown of Button B 【发布时间】:2012-05-10 19:20:54 【问题描述】:

我正在尝试用两个按钮交换触摸事件。当一个按钮的 TouchDown 事件被触发时,我会在当前被触摸的按钮上加载一个新按钮。问题是我需要选择这个新按钮进行拖动。我需要取消第一个按钮的 TouchDown,然后将其强制到新按钮上,以便用户立即开始拖动它。如何手动拨打我的widgetTouch:(id)sender forEvent:(UIEvent *)event 并保持触摸?

【问题讨论】:

【参考方案1】:

我会试试[button sendActionsForControlEvents: UIControlEventTouchDown]

【讨论】:

这在一定程度上有效 - 触摸事件被调用,但是当我尝试移动时它不会触发我的 Touch Drag Inside 事件。 嗯...下面的按钮是否还在对该事件做出反应? 另外,如果你告诉按钮成为FirstResponder会发生什么? 不,但只是因为我正在调用 [control touchesCancelled:nil withEvent:event];在底部按钮上。如果我告诉它成为第一响应者,这没什么新鲜的。

以上是关于sqlserver触发器如何知道当前处理啥类型的触发的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 中创建触发器execute master有啥作用

在按钮 B 的触地期间触发按钮 A 上的触地

Azure 触发的 Webjob - 检测 webjob 何时停止

sqlserver 添加一条数据就在这条数据末尾储存当前时间 不知道怎么写这个触发器。 请大家帮帮忙!

sql server中dbcheck 数据库是啥命令

SQLServer触发器的问题