Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 订单的确认_Sql_Database_Postgresql_Join_Triggers - Fatal编程技术网

Sql 订单的确认

Sql 订单的确认,sql,database,postgresql,join,triggers,Sql,Database,Postgresql,Join,Triggers,我有一个管理应用程序的销售,库存和付款对整个仓库销售员从一个web界面。特别是,在预测订单时,必须创建一行,对应于订购的每个产品以及相应的数量。库存可用性的验证在订单发出时进行 考虑到以下两种验证方法,以满足订单要求: 1) 使用表OrderLine上的“BEFORE…ON INSERT”触发器,如果存在足够的库存,则对产品进行选择验证 2) 正在执行从订单行选择加入产品,其中quant 我的问题是,在哪种情况下,这两种选择中的每一种都更有可能?为什么 谢谢您可能想要(不成文的)第三个选项 使用

我有一个管理应用程序的销售,库存和付款对整个仓库销售员从一个web界面。特别是,在预测订单时,必须创建一行,对应于订购的每个产品以及相应的数量。库存可用性的验证在订单发出时进行

考虑到以下两种验证方法,以满足订单要求:

1) 使用表OrderLine上的“BEFORE…ON INSERT”触发器,如果存在足够的库存,则对产品进行选择验证

2) 正在执行从订单行选择加入产品,其中quant

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

谢谢

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

  • 使用存储过程()下订单。在函数内部,使用(可能)您需要的任意数量 即使您在应用程序层完成了这项工作,您仍然需要在单个事务中完成所有检查和提交,可能是在单个可序列化事务中

    根据应用程序的不同,可序列化事务可能不适合您。一些在线供应商接受订单时,并不保证他们有足够的库存来满足订单。稍后,您可能会收到一封电子邮件,说有些东西已延期订购。(只是要记住一些事情。)


    只要我的两分钱-在应用程序的业务逻辑层处理验证。我相信您试图解决的问题是验证检查和数据插入之间的时间间隔。您应该能够利用具有适当隔离级别的事务来处理此问题。尽管我认为您的答案是正确的。如果你只能在这两个选项中选择一个,那么你选择的是哪一个?@fegol:他们都没有完成你似乎想要的工作——确保现有库存用于完成这一订单,而不是其他订单。