我的数据库中有许多相互关联的表。我有一个表(表一),其中插入了数据并且 id 自动递增。一旦该行有一个 ID,我想将其插入到一个表(表三)中,其中包含来自表单的另一组 ID(此数据也将进入一个表,因此它可以来自该表),同样表格作为进入第一个表的数据来自。
这两个 ID 一起构成了第三个表的主键。
我怎么能这样做,它表明多个 ID 连接到一个 ID 用于其他东西。
谢谢。
我的数据库中有许多相互关联的表。我有一个表(表一),其中插入了数据并且 id 自动递增。一旦该行有一个 ID,我想将其插入到一个表(表三)中,其中包含来自表单的另一组 ID(此数据也将进入一个表,因此它可以来自该表),同样表格作为进入第一个表的数据来自。
这两个 ID 一起构成了第三个表的主键。
我怎么能这样做,它表明多个 ID 连接到一个 ID 用于其他东西。
谢谢。
您不能通过触发器来做到这一点,因为触发器只能使用您已经插入的数据,而不是当前仅驻留在用户界面中的数据。
通常你如何处理这种情况是你编写一个插入会议的存储过程,返回 id 值(在 SQL Server 中使用 scope_identity(),但我确信其他数据库也有方法返回自动生成的 id )。然后,您将使用该值与该表所需的其他值一起插入到另一个表中。您当然希望将整个事情包装在事务中。
我认为您可能可以在表 1 触发器中执行您所描述的操作(只需将 INSERT 写入表 3),但您必须将表 3 行的附加信息放入表 1 行中,这不是t 很聪明。
我不明白您为什么要这样做,而不是在代码中编写 INSERT,这样阅读它的人就可以看到正在发生的事情。
触发器的问题在于它们很容易在数据库中隐藏业务逻辑。我认为(并且我相信我在这里是大多数人)更容易理解、管理、维护和全面处理所有业务规则都存在于同一一般区域中的应用程序。
有理由使用触发器(例如,用于传播非规范化值),就像使用存储过程有理由一样。我将断言它们在很大程度上与性能关键领域有关。或者应该是。