2009-01-25 103 views
1

我在我的数据库中有许多相互关联的表。我有一个表(表一),它有数据插入和id自动递增。一旦该行有一个ID,我想用另一组来自表单的ID(这个数据也会进入一个表,所以它可以来自该表)插入到表中(表3)作为进入第一个表格的数据来自于的形式。触发插入到同一个表中

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

我该如何做到这一点,它表明多个ID加入到一个单一的ID作为别的东西。

谢谢。

+0

请提供一些示例代码。这是一个设计问题吗?或触发问题?如果是这样,请包含触发代码。 – 2009-01-25 18:29:22

回答

0

我想你也许可以做你描述(只写插件,以表3)表1触发器),但你得把表的附加信息3行到表1的行,这不是很聪明。

我看不出为什么你会这样做,而不是在你的代码中写INSERT,读者可以看到发生了什么。

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

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

1

你不能通过触发器来做到这一点,因为触发器只能获得你已经插入的数据,而不是只存在于用户界面中的数据。

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