验证订单

时间:2012-02-13 01:22:58

标签: sql database postgresql join triggers

我在网络界面上的整个仓库中有销售,库存和付款的管理应用程序。特别是,当订单被验证时,它必须创建对应于与相应数量一起订购的每个产品的线。库存可用性的验证在订单时刻完成。

考虑以下两种验证方式:

1)使用触发器" BEFORE ... ON INSERT"在OrderLine表上,如果存在足够的库存,则在产品上进行SELECT验证。

2)执行SELECT ... FROM OrderLine JOIN产品WHERE quant

我的问题是,这两种选择中的每一种都更有可能出现在哪种情况?为什么?

由于

1 个答案:

答案 0 :(得分:2)

你可能想要(不成文)的第三个选项。

  1. 使用存储过程(in PostgreSQL, a function)下订单。在函数内部(可能)使用尽可能多的serializable transactions
  2. 即使您在应用程序层中执行此操作,您仍然需要在单个事务中执行所有检查和提交,可能在单个可序列化事务中。

    根据您的应用程序,可序列化的事务可能不适合您。一些在线供应商接受订单而不保证他们有足够的库存来填补它。之后,您可能会收到一封电子邮件,说明已经延期交货。 (请记住一些事情。)

    General information about PostgreSQL transactions