2009-12-11 34 views
1

我想请输入以下命令QuoteItem的UPDATE触发器:需要使用SQL帮助加入一个功能

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) 

我得到follwoing错误:

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. 

回答

0

答复发现here由Naom我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) 
0
UPDATE QuoteItem 
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL 
FROM dbo.fn_GetQuoteItemListPrice(xx.ItemId, xx.RoomId) 
    AS StyleItem 
CROSS JOIN (QuoteItem JOIN INSERTED ON 
    QuoteItem.QuoteItemId = INSERTED.QuoteItemId) xx 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL) 

尝试改变我上面所做的,分配一个表别名xx和引用,而不是..

+0

消息102,级别15,状态1,过程QuoteItem_UPDATE 13行 附近有语法错误 'XX'。 – Shimmy 2009-12-11 04:35:58

+0

对不起,我没有打开SQL,但尝试在xx – Sparky 2009-12-11 04:54:19

+1

之后添加ON 1 = 1另外,为什么需要交叉连接,您是否可以不直接从INSERTED表中引用ItemID和RoomId? – Sparky 2009-12-11 04:57:51