2011-06-01 126 views
0

我已经分别为INSERT和UPDATE创建了触发器。在Schema1中插入时,触发器将在Schema2中插入一行。表:SQL Server 2008中的触发器

  • Schema1.Temp1
  • Schema2.Temp2

触发创建成功。


但是,当我在Temp1插入数据时,它给我错误Temp2 - 重复键。 Temp2对另外两个表格有限制。什么可能导致这种情况,以及如何解决?

+1

我不认为这个问题与触发器有任何关系。你只是插入重复的值。错误显示违反了哪个约束。 – 2011-06-01 00:43:06

+1

请更新'Temp2'的'CREATE TABLE'语句。停止重复数据是一件好事(tm) - 听起来就像你正在设置一个“可怜的人”复制,当有更好的选择取决于你真正想要这些触发器做什么。 – 2011-06-01 01:10:00

+0

你能告诉我们** Table2的结构(列,它们的数据类型,你在表上有什么索引)以及你的触发器用来插入数据的语句,以及** complete和exact **错误信息你越来越? – 2011-06-01 04:46:25

回答

0

当你的触发器被调用时,试着在Table2上写(如你所说的)。

Peraphs你没有用Temp1中存在Temp1行的条件编写INSERT查询。

您的查询必须是此类型:

INSERT INTO Table2 (field list) 
SELECT field list 
FROM inserted 
WHERE NOT EXISTS(SELECT 'key' in Table2 t2 where t2.id = inserted.field_of_key) 

这样可以防止重复键,所以如果你想太多更新插入您的表2,你可以当钥匙已经写一个UPDATE stament现有。

告诉我,如果没关系