在sql server中,很容易将数据作为自定义类型传递给sql server,然后迭代它并执行操作。但在mysql中,如果我有1个订单,其中包含许多库存,就像我的订单方案是
order (id,customer_name,phone,address,total,created_date)
orderdetails(id,order_id,inventory_id,quantity,amount,created_date)
所以,当我要制作存储过程我该怎么办时,我可以在1个订单中有很多库存。
答案 0 :(得分:1)
除了做一系列调用之外,我知道除了另一个之外,可能在一个事务中添加一个order_detail。
在java中,使用jdbc,可以在批处理语句中执行此操作,从而节省一些到数据库的往返。
答案 1 :(得分:1)
您的问题未提及PHP或任何其他语言。
所以在纯MySQL中(对于事件处理或任何语言调用的能力本身就是这样)...你用一个代表order.id
的参数调用一个存储过程。
现在,在Stored Proc中,您可以找到一种智能的快速方法来处理SQL orderdetails
在SQL集和关系中的order.id
。这应该是目标。
或者(读:你是SQL的新手,或者它太棘手了)你为慢速路径摆动并创建一个MySQL CURSOR
来迭代(获取)下一行并在你处理的处理循环中与那些orderdetails.
MySQL Cursor以简单的SELECT
语句开始生命。
如果我在存储过程中看到CURSOR
,它总是会引发一个红旗。但有时你似乎必须这样做。仅仅因为CURSOR
可以完成工作并不意味着你应该以自己为荣。它可能比设置和关系慢50倍。
因此不需要自定义类型(问题的标题)。