【问题标题】:Another way of conditioning the query调节查询的另一种方法
【发布时间】:2022-11-10 00:28:51
【问题描述】:

我在this页面的一篇文章中看到了下面的SQL块:

select @empname = d.Emp_Name 
from deleted d

您如何在SELECT 语句中添加@empname = d.Emp_Name 之类的内容?

它有什么作用?它是另一种调节方式,而不是使用WHERE 子句吗?

另外,它似乎在 SQL Server 中,但可以肯定的是,它不是可以在 MySQL 或其他一些 DBMS 中完成的吗?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以通过这种方式分配给变量...

    ...但这可能是一个错误。此分配约定通常仅在您期望恰好有一行时使用。但是,deleted 表名表示可能的触发器,SQL Server 有时会在对触发器的一次调用中批量处理单个删除,这样表就有了多行。因此,此触发器可能无法正确处理某些删除。

    【讨论】:

    • deleted 也用于 T-SQL 的 UPDATEMERGEDELETE 语句的 OUTPUT 子句中,而不仅仅是在 TRIGGER 对象内。它也可以是派生表或 CTE 的名称。
    • @Dai 因此是“可能”。但即便如此,这也超出了我的需要。问题第一句中的链接肯定表示触发。
    • 对 - 我只是为那些不熟悉 T-SQL 的阅读本文的人解释有点酷-parts(而不仅仅是它的痛苦部分)
    • 是的,这实际上解释了我们如何访问触发器中的NEWOLD 列值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2010-10-14
    • 1970-01-01
    • 2014-12-13
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多