Sql server 需要有关SQL连接到函数的帮助吗
我正在尝试输入以下内容以更新QuoteItem触发器:Sql server 需要有关SQL连接到函数的帮助吗,sql-server,triggers,user-defined-functions,Sql Server,Triggers,User Defined Functions,我正在尝试输入以下内容以更新QuoteItem触发器: UPDATE QuoteItem SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL FROM dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId) AS StyleItem CROSS JOIN (QuoteItem JOIN INSERTED ON
UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId)
AS StyleItem
CROSS JOIN (QuoteItem JOIN INSERTED ON
QuoteItem.QuoteItemId = INSERTED.QuoteItemId)
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)
我得到以下错误:
Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6
The multi-part identifier "QuoteItem.ItemId" could not be bound.
Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6
The multi-part identifier "QuoteItem.RoomId" could not be bound.
尝试我在上面所做的更改,分配一个表别名xx并引用它。由Naomi Nosonovsky找到的答案:
UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM QuoteItem JOIN INSERTED AS INSERTED ON QuoteItem.QuoteItemId =
INSERTED.QuoteItemId
CROSS APPLY dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId)
AS StyleItem
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)
Msg 102,级别15,状态1,过程QuoteItem_UPDATE,第13行“xx”附近的语法不正确。很抱歉,我没有打开SQL,但尝试在xx之后添加1=1。另外,为什么需要交叉连接,您不能直接从插入的表中引用ItemID和RoomId?因为您可以看到它是一个多值udf,例如,返回表和我需要的交叉连接,因为我想更新QuoteItem受影响的行-插入的表无法更新。正如你可以猜到的那样,这个函数也做了一些计算,这就是我需要它的方式
UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM QuoteItem JOIN INSERTED AS INSERTED ON QuoteItem.QuoteItemId =
INSERTED.QuoteItemId
CROSS APPLY dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId)
AS StyleItem
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)