我目前正在创建某种库存系统。
我有master_tbl
我在哪里保存项目。在master_tbl
中,我有列qty_left
或剩余的可用库存。
我还有表issuance_tbl
,其中我保存了发布项目中的所有交易。
在此表中有issued_qty
。
我的问题是如何在issuance_tbl
更新master_tbl.qty_left
的同时将行插入{{1}}。 (master_tbl.qty_left - issuance_tbl.issued_qty)。
有可能吗?
答案 0 :(得分:0)
我认为最好的方法是使用存储过程。您可以在一个地方拥有一堆带有错误处理和ACID事务的SQL语句。这是因为如果第一个查询执行而第二个查询失败,则可能需要回滚事务。存储过程允许所有这些花哨但可靠的东西。
答案 1 :(得分:0)
这是一个例子:
<form method="post">
QTY:<input type="text" name="qty_left"></input>
<input type="submit" name="submit" value="update"></form>
<?php
////////your config db
$qty = $_POST['qty_left'];
if(isset($_POST['submit']);
$sql = mysql_query("insert into issuance_tbl (issued_qty) values (".$qty.") ");
$sql1 = mysql_query("update master_table set qty_left= ".$qty."");
?>
答案 2 :(得分:0)
我不完全相信“如果有办法做这件事”: 你需要分步完成,就像这样:
$result = $this->db->insert($table);//Example function to insert inventory item
$insert_id = $this->db->insert_id();//Example function to get the id of inserted item
if($result)
$res = $this->db->update($id,$data,$table);//Example function to update data of quantity table
if(!$res)
{
$this->db->delete($insert_id,$table);s
$result = '-1';
}
return $result;
希望这可能会有所帮助
答案 3 :(得分:0)
$con = mysqli_connect($host, $user, $password, $database);
...
$issued_qty = '10'; //some value
$insert_query = "insert into issuance_table (issued_qty, ...) values ('$issued_qty', ... ) ;";
$update_query = "update master_tbl set qty_left = (qty_left - ".$issued_qty.") where ....";
mysqli_multi_query($con, $insert_query.$update_query);