首页 \ 问答 \ 对于TSQL插入/更新触发器,可以插入和删除都为空吗?(For a TSQL insert/update trigger, can inserted and deleted both be empty?)

对于TSQL插入/更新触发器,可以插入和删除都为空吗?(For a TSQL insert/update trigger, can inserted and deleted both be empty?)

我一直在使用TSQL触发器,假设insert表总是包含插入或更新的记录,而删除的表总是包含更新记录(我忽略删除)。

这是相关的MSDN文章:

http://msdn.microsoft.com/en-us/library/ms191300.aspx

但是,我遇到插入和删除都为空的情况。 这是我一直在使用的测试触发器。

CREATE TRIGGER [dbo].[InsertUpdateTest] ON [dbo].[Test] 
AFTER INSERT, UPDATE 
AS
    DECLARE @countInserted INT
    DECLARE @countDelete INT

    SET @countInsert = (SELECT COUNT(*) FROM INSERTED)
    SET @countDeleted = (SELECT COUNT(*) FROM DELETED)

    IF (@countInserted = 0 AND @countDelete = 0)
    BEGIN
        print 'Inserted and deleted are both empty'
    END

在什么条件下会发生这种情况?


I have been using a TSQL trigger under the assumption that the inserted table always contains records for an insert or update and the deleted table always contains records for updates (I am ignoring deletes).

Here is the related MSDN article:

http://msdn.microsoft.com/en-us/library/ms191300.aspx

However, I have encountered situations where both inserted and deleted are empty. Here is a test trigger I have been using.

CREATE TRIGGER [dbo].[InsertUpdateTest] ON [dbo].[Test] 
AFTER INSERT, UPDATE 
AS
    DECLARE @countInserted INT
    DECLARE @countDelete INT

    SET @countInsert = (SELECT COUNT(*) FROM INSERTED)
    SET @countDeleted = (SELECT COUNT(*) FROM DELETED)

    IF (@countInserted = 0 AND @countDelete = 0)
    BEGIN
        print 'Inserted and deleted are both empty'
    END

Under what conditions does this occur?


原文:https://stackoverflow.com/questions/11791294
更新时间:2022-03-03 22:03

最满意答案

请参阅https://stackoverflow.com/a/27574474上的用户'sprocket'答案:

ROWS和RANGE允许窗口函数查看用户定义的行窗口,例如前面的27运行移动平均值:

SELECT spend,
       SUM(spend) OVER (PARTITION BY user ORDER BY date ROWS BETWEEN 27 PRECEDING AND CURRENT ROW),
       user,
       date
FROM user_spend;

See user 'sprocket' answer at https://stackoverflow.com/a/27574474:

ROWS and RANGE allow the window function to look at a user defined window of rows, for example the previous 27 to run a moving average:

SELECT spend,
       SUM(spend) OVER (PARTITION BY user ORDER BY date ROWS BETWEEN 27 PRECEDING AND CURRENT ROW),
       user,
       date
FROM user_spend;

相关问答

更多

相关文章

更多

最新问答

更多
  • 以编程方式创建视频?(Create videos programmatically?)
  • 为什么开机慢上面还显示;Inetrnet,Explorer
  • javascript数组,如何改变这个数组结构(javascript arrays, how to change this array structure)
  • 在ASP.NET Web API中使用多个Get方法进行路由(Routing with multiple Get methods in ASP.NET Web API)
  • 用于backbone.js验证的自定义验证器(Custom validator for backbone.js validation)
  • const char *与其他指针有什么不同?(Is const char * different from other pointers? [duplicate])
  • 无效的列索引,使用PreparedStatement更新(Invalid column index , update using PreparedStatement)
  • watchOS WCSession'已配对'和'watchAppAvailable'不可用(watchOS WCSession 'paired' and 'watchAppAvailable' are unavailable)
  • CalledFromWrongThreadException在Android上执行JUnit测试(CalledFromWrongThreadException exercising JUnit tests on Android)
  • 如何把文件保存到你的应用程序目录中?(How to put\save files into your application directory? (adobe air))
  • 美元符号在Java方法描述符中的含义?(Meanings of dollar sign in Java method descriptor?)
  • font-size的含义是什么:1em / 2em?(What doe the meaning of font-size:1em/2em?)
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • Android - 检测与特定wifi ssid断开连接的正确方法?(Android - Correct way to detect disconnecting from a particular wifi ssid?)
  • 通过Shell脚本将文件转换为另一个文件(Convert File To Another File By Shell Script)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • 如何过滤magento废弃的购物车报告集合(How to Filter the magento abandoned cart report collection)
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • web api http post传递对象504接收失败(web api http post passing object 504 Receive Failure)
  • Rails从视图编辑模型上的多个属性的方法(Rails way to edit multiple attributes on a model from a view)
  • 总是用{}初始化对象是否是好习惯?(Is it good habit to always initialize objects with {}?)
  • 在方案中编写特殊字符到输出端口(编译器设计)(writing special characters to output port in scheme (compiler design))
  • 电脑等级考试得证有多大用处?
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • 第一次调用函数将无法按预期工作,但下一次工作正常(calling a function on the first time won't work as expected, but next time is working)
  • 如何优化使用BigInteger操作执行时间的代码(How to optimize the code that uses BigInteger operations for execution time)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何提供个人资料信息,以便Passport.js可以使用它?(how does Profile information should be provided so Passport.js can use it?)
  • 有没有办法初始化jquery数据表中的细节?(is there any way to initialize details in jquery datatable?)