【发布时间】:2010-11-22 00:56:36
【问题描述】:
我想知道一旦新的销售被插入到销售表中,我将如何创建一个触发器来更新发货表。我猜代码的前几行应该是这样的:
create trigger sale_trig
after insert of sale_id on sales
.....
但我不知道如何做剩下的。 我正在使用 iSQL Plus。
销售表包括:sale_id、sale_price、sale_date、no_of_prods、prod_id、cust_id、desp_id。
调度表包括:desp_id、shelfLoc、quantity、prod_id、prod_name。
我猜是因为我在调度表中没有sale_id,所以我需要先添加它并使其成为外键,但我不确定。
编辑
我正在为数据库创建测试数据。他们给我们的模式说,出于某种原因,我们需要在调度表中包含prod_name,但我认为我们只需要将它与prod_id 链接起来。
好吧,也许它没有更新。那么它只是一个新的插入到调度表中吗?我将它用于 iSQL Plus。对于shelfLoc,我们被告知使用随机生成器生成随机字符串。那么我如何将它链接到触发器中呢? (我希望这是有道理的)
【问题讨论】:
-
您可能会考虑告诉人们您正在使用什么 DBMS,因为触发器差异很大。 MS SQL Server、Oracle、MySQL、Postgres、...?
-
您为什么不在应用程序本身中执行此操作?为什么要添加触发器?有完成销售的应用程序代码,也可以轻松地将行添加到发货中。为什么要使用触发器?为什么不更新应用程序?
-
因为一旦完成销售,我必须使用触发器来更新发货表。
-
@taksIV:“这是我必须使用触发器的要求”这是一个非常愚蠢的要求。它显然太复杂了(或者您不会在这里寻求帮助。)您可以建议另一种方法更简单、更便宜、更可靠且不那么复杂。允许“回击”诸如“在应用程序更改更简单的地方使用触发器”这样的愚蠢要求。
-
我的要求,我的意思是对我正在做的任务的要求。
标签: database oracle triggers insert