2012-11-01 20 views
0

我在我的数据库中有两个表,一个是Transactions,另一个是TransactionHistories。后者基本上是一个审计表,通过在事务上插入,更新和删除来执行触发器来捕获数据的屏幕截图。SQL - 使用触发器中的主键从另一个表中选择一个字段

我正在成功检索存储在列表匹配列的Transactions表中的所有数据,但是我尝试使用外键从另一个表中检索数据时遇到了困难。例如:

事务表有一个字段“TransactionType_TransactionTypeId”,但在审计表中我们希望将其名称等同于“TransactionTypeName”存储。这需要从具有“TransactionTypeId”和“Name”字段的“TransactionTypes”表填充。

我正在努力编写一个查询来检索这个,因为我们希望。我正在尝试类似于以下内容,但收效甚微:

SELECT @TransactionTypeName=Name 
FROM TransactionTypes 
WHERE inserted.TransactionType_TransactionTypeId=TransactionTypes.TransactionTypeId; 

我假设这是一个句法噩梦。如果有人能指引我正确的方向,我会非常感激!

+0

您正在使用哪种RDBMS? –

+0

对不起,当然!我正在使用Microsoft SQL Server Management Studio。 –

回答

0

以及获得名字,你应该做到以下几点

select @TransactionTypeName = TT.Name 
from inserted as i 
    left outer join TransactionTypes as TT on TT.TransactionTypeId = i.TransactionType_TransactionTypeId 

,但你要知道,inserted表可以有多个行,而你只有一个行中获得价值。

+0

绝对享受,非常感谢您的帮助! –

相关问题