2016-06-09 61 views
0

我试图编写一个触发器,它从表1中获取QuoteNumber并将其插入到表2中,其中ShippingIdentity与两个表中的记录匹配。问题是QuoteNumber被插入到它自己的行(记录)任何人都可以请让我知道为什么?谢谢。触发器没有将值插入到正确的记录中

ALTER TRIGGER InsertQuoteNumber 
ON AccountInfo 
FOR INSERT 
AS 
BEGIN 

INSERT INTO ShippingInfo (QuoteNumber) 
SELECT a.QuoteNumber 
FROM AccountInfo a 
inner join inserted i on a.ShippingIdentity = i.ShippingIdentity 
END 
+0

哪个RDBMS用于这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

+0

我正在使用sql-server –

+0

感谢您的回复。我得到了它的停止把同一QuoteNumber所有记录,但它仍然是把QuoteNumber在它自己的行,而不是在ShippingIdentity比赛 ALTER TRIGGER ShippingQuoteNumber \t ON ShippingInfo \t UPDATE \t后AS \t BEGIN \t UPDATE SET ShippingInfo = QuoteNumber a.QuoteNumber \t FROM AccountInfo一个 \t INNER JOIN插入的T ON t.ShippingIdentity = a.ShippingIdentity END –

回答

0

您在描述中使用“插入”一词,但我认为您的意思是“更新”。也就是说,您要修改ShippingInfo中的现有行以反映新的报价编号。

代码中的问题与您选择的单词一样简单。您正在使用INSERT命令,该命令插入一个新行。如果您想更新现有的行,请使用UPDATE

+0

当我用它设置相同的曲的UPDATE oteNumber所有记录,而不是匹配的每行不同ShippingIdentityin:。\t ALTER TRIGGER [DBO] [ShippingQuoteNumber] \t ON [DBO] [ShippingInfo] \t对于插入 \t AS \t BEGIN \t UPDATE ShippingInfo SET QuoteNumber = a.QuoteNumber \t FROM AccountInfo a \t INNER JOIN inserted t ON t.ShippingIdentity = a.ShippingIdentity END –

+0

感谢您的回复。我得到它停止对所有记录放置相同的QuoteNumber,但它仍然把QuoteNumber放在它自己的行中,而不是在ShippingIdentity匹配的位置。ALTER TRIGGER ShippingQuoteNumber ON UPDATE AS BEGIN UPDATE后的ShippingInfo ShippingInfo SET QuoteNumber = a.QuoteNumber FROM AccountInfo a INNER JOIN插入t ON t.ShippingIdentity = a.ShippingIdentity END –

相关问题