我有两个数据库表,数据库表以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从第一个表到第二个表使用触发器。
答案 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并且分别具有默认值。