带有表别名的T-SQL Update语句WHERE子句

时间:2014-06-10 20:13:47

标签: sql-server tsql triggers

正确的我让自己感到困惑所以只是想澄清,让我们说我想在触发器内进行以下更新。触发器位于名为tblCustomers

的表上
UPDATE tblContacts 
SET tblContacts.ContactName = I.ContactName
FROM tblContacts cont 
INNER JOIN inserted I ON cont.customerID = I.customerID

这只会更新inner joininserted之间tblContacts的记录,即大多数情况下只有一条记录,或者我是否需要包含WHERE子句?

另外,我可以在where子句中使用别名(续),还是需要使用tblContacts

抱歉,我知道这很愚蠢,但我让自己变得越来越困惑!谢谢!

2 个答案:

答案 0 :(得分:1)

  

这只会更新insertedtblContacts之间内部联接的记录,即大多数情况下只有一条记录

是。这可以是一行或多行 - 取决于导致触发器实际发生的语句 - 但它只会更新属于Inserted表的那些行

  

另外,我可以在where子句中使用别名(cont),还是需要使用tblContacts

你绝对可以使用表别名!实际上,当您定义表别名时,您必须使用它。

答案 1 :(得分:1)

如果每个ON子句定义匹配tblContacts.ContactName,则更新查询将更新所有ON cont.customerID = I.customerID值。因此,如果10行匹配则会影响10个值(10行)。

同样,是的,您可以在WHERE条件中使用表别名。