2011-06-13 88 views
2

我不知道如果我正確地做這個當前創建的記錄工作,但在這裏不用...如何與SQL觸發器

我想寫一個SQL觸發器,着眼於插入當前記錄並對此作出反應,但我的問題是;我如何處理這條記錄中的數據?

例如,如果新訂單被插入到訂單表中,我希望能夠從該訂單獲取客戶名稱以用於某種邏輯(現在可以說是電子郵件)。

我曾考慮過使用返回TOP 1ORDER BY DESCSELECT陳述,但這對我來說似乎有點草率?

任何意見將大大收到!

在此先感謝。

+1

SQL Server或其他RDBMS?如果SQL Server,哪個版本? – 2011-06-13 13:31:07

回答

1

對於MS SQL Server,您需要查詢inserted表以獲取正在插入的記錄。

雖然,inserted表將包括爲該事務插入的所有行。在SQL Server中通常不建議逐行處理行。你應該使用基於集合的方法。

顯然,如果只插入一行,那麼在inserted表中只會有一行。

+0

當你說你不應該逐行工作時,你的意思是不可能/最好的做法是使用某種'for each'? – 2011-06-13 14:34:23

+0

@Jimbo:我在說這通常不是最佳做法。我並不是說它不會發生,但在可能的情況下最好避免它。您可以使用while循環或光標,但性能通常較差。 – codingbadger 2011-06-13 14:39:09