触发插入到同一个表中

时间:2009-01-25 18:22:41

标签: database primary-key triggers identity

我的数据库中有很多相互关联的表。我有一个表(表一)已插入数据和ID自动递增。一旦该行有一个ID我想把它插入一个表(表三),另一组ID来自一个表格(这个数据也将进入一个表,所以它可以来自该表),同样表格,因为进入第一张表的数据来自。

两个ID一起构成第三个表的主键。

我该如何做到这一点,它表明多个ID被加入到一个ID中。

感谢。

2 个答案:

答案 0 :(得分:1)

您无法通过触发器执行此操作,因为触发器仅可用于已插入的数据,而不是仅存在于用户界面中的数据。

通常你如何处理这种情况是你编写了一个插入会议的存储过程,返回id值(在SQL Server中使用scope_identity(),但我确信其他数据库会有返回自动生成的方法id也是)。然后,您将使用该值插入到具有该表所需的其他值的另一个表中。你当然希望将整个事情包装在交易中。

答案 1 :(得分:0)

我认为您可以在表1触发器中执行您所描述的内容(只是将INSERT写入表3),但是您必须将表3行的其他信息放入表1行,这不是很聪明。

我不明白为什么你会这样做,而不是在你的代码中编写INSERT,有人阅读它可以看到发生了什么。

触发器的问题在于它们可以轻松地隐藏数据库中的业务逻辑。我认为(而且我相信我在这里占多数),它更容易理解,管理,维护并且通常全面处理所有业务规则存在于同一个一般领域的应用程序。

有理由使用触发器(例如,传播非规范化值),就像使用存储过程的原因一样。我将断言它们主要与性能关键领域相关。或者应该是。