【发布时间】:2015-05-05 17:18:56
【问题描述】:
我正在尝试执行一个 SQL 插入触发器,当数据被插入到一个直接触发器的表中时,该触发器被触发并将一些数据插入到另一个表中,但我试图在触发触发器之前检查一个条件,该触发器是查找与插入数据相似的数据是否已经在目标表中。我尝试了以下查询
CREATE trigger [dbo].[trgI_InsertINTOLastTrade]
ON [dbo].[tblCC]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
IF(SELECT COUNT(id) AS IDC
FROM LastTrades
WHERE product = inserted.Product
AND grade = inserted.grade
AND Term = inserted.Term
AND ISNULL(Pipeline, '') = inserted.Pipeline
AND ISNULL([Index], '') = inserted.[Index]) != 0
BEGIN
RETURN
END
INSERT INTO LastTrades(Product, Grade, Term, Pipeline,[Index], LastTradeValue)
SELECT
Product, Grade, Term, Pipeline, [Index], LastTradeValue
FROM
inserted
END
当我执行上述查询时,我收到以下错误:
消息 4104,级别 16,状态 1,过程 trgI_InsertINTOLastTrade,第 15 行
无法绑定多部分标识符“inserted.Product”。消息 4104,级别 16,状态 1,过程 trgI_InsertINTOLastTrade,第 15 行
无法绑定多部分标识符“inserted.grade”。消息 4104,级别 16,状态 1,过程 trgI_InsertINTOLastTrade,第 15 行
无法绑定多部分标识符“inserted.Term”。消息 4104,级别 16,状态 1,过程 trgI_InsertINTOLastTrade,第 15 行
无法绑定多部分标识符“inserted.Pipeline”。消息 4104,级别 16,状态 1,过程 trgI_InsertINTOLastTrade,第 15 行
无法绑定多部分标识符“inserted.Index”。
有什么好的方法可以解决这个问题吗?
【问题讨论】:
标签: sql-server triggers