无法使用Trigger复制某些列

时间:2013-11-18 16:12:17

标签: sql sql-server triggers

我有两个数据库表,数据库表以1:1的关系连接。使用触发器我需要将一些coloumns数据复制到Log表。(当新的插入或更新发生时)

  
    

错误(1)列名称无效' ItemTbl_ItemId'。
             (2)列名无效'价格'
    (3)列名或提供的值与表定义不匹配。

  

第一张表有

  
    

表名 - ItemTbl

    ItemId,ItemName,ItemPrice,Comments,Brand_BrandId

  

第二张表

  
    

表名 - 项目日志

    ItemLogId,ItemTbl_ItemId,ItemName,ItemPrice,ModifiedDate

  

我的触发器

CREATE TRIGGER [dbo].[ItemHistoryTrigger]
ON [dbo].[ItemTbl]
FOR INSERT,UPDATE
AS
BEGIN
 IF EXISTS(SELECT ItemId,ItemName,ItemPrice FROM INSERTED)
  BEGIN
   INSERT INTO [dbo].[ItemLog]
    SELECT ItemTbl_ItemId,ItemName,ItemPrice FROM  INSERTED;
  END
END

我只想复制ItemName& ItemPrice从第一个表到第二个表使用触发器。

1 个答案:

答案 0 :(得分:1)

您在创建触发器的表(ItemTbl)中没有名为ItemTbl_ItemId的列。试试这个:

CREATE TRIGGER [dbo].[ItemHistoryTrigger]
ON [dbo].[ItemTbl]
FOR INSERT,UPDATE
AS
BEGIN
 IF EXISTS(SELECT ItemId,ItemName,ItemPrice FROM INSERTED)
  BEGIN
   INSERT INTO [dbo].[ItemLog](ItemTbl_ItemId,ItemName,ItemPrice)
    SELECT ItemId,ItemName,ItemPrice FROM  INSERTED;
  END
END

这假设ItemLog的列ItemLogId和ModifiedDate是auto_incremented并且分别具有默认值。