如何同时对多个表使用 Insert 查询?
How to use Insert query with multiple tables at a same time?
我有一种形式,比方说账单形式。我有 3 tables。
- 账单(billId->主键)
- billdetails (billdetailId->primary key, billId->foregin key)
- fintran (finalId -> primary key, form 总共有10个输入。
提交时,前 5 个输入应放入帐单 table,其他 5 个输入应放入帐单详细信息。一切都会进入决赛 table。我为此使用了以下查询。
BEGIN;
$sql = mysqli_query($conn,"INSERT INTO `bill`(`societyId`, `unitId`, `memberId`, `area`, `arrear`, `invoiceNumber`, `invoiceDate`, `dueDate`, `billingPeriod`, `total`, `interestOnArrear`, `totalDue`, `email`, `penalty`, `principalArrears`, `interestArrears`, `advancedAdjusted`, `netPending`) VALUES ('".$societyId."','".$unitId."','".$memberId."','".$area."','".$arrear."','".$invoiceNumber."','".$invoiceDate."','".$dueDate."','".$billingPeriod."','".$total."','".$interestOnArrear."','".$totalDue."','".$email."','".$penalty."','".$principalArrears."','".$interestArrears."','".$advancedAdjusted."','".$netPending."')");
$memo = $_REQUEST['memo'];
$charge = $_REQUEST['charge'];
$sql= mysqli_query($conn,"INSERT INTO `billdetail`(`biilId`, `memo`, `charge`) VALUES (LAST_INSERT_ID(),'".$memo."','".$charge."')");
$sql= mysqli_query($conn,"INSERT INTO `fintran`(`societyId`, `docId`, `docTypeName`, `docDate`, `unitId`, `unitName`, `memberId`, `memberName`, `comboId`, `ledgerId`, `ledgerName`, `debit`, `credit`, `netValue`) VALUES ('".$societyId."',LAST_INSERT_ID(),'bill','','".$unitId."','".$unitId."','".$memberId."','".$memberId."','','".$charge."','','','','')");
COMMIT;
插入数据后,我想要 billId
即 billdetails
和 fintran
table 中账单 table 的主键。但是通过这个查询,我只能在 billdetail
table 中得到它。在 fintran
table 中,我得到 billdetail
table 的主键。请帮助我。
No, you can't insert into multiple tables in one MySQL command. You can however use transactions.
检查这个:MySQL Insert into multiple tables? (Database normalization?)
我有一种形式,比方说账单形式。我有 3 tables。
- 账单(billId->主键)
- billdetails (billdetailId->primary key, billId->foregin key)
- fintran (finalId -> primary key, form 总共有10个输入。
提交时,前 5 个输入应放入帐单 table,其他 5 个输入应放入帐单详细信息。一切都会进入决赛 table。我为此使用了以下查询。
BEGIN;
$sql = mysqli_query($conn,"INSERT INTO `bill`(`societyId`, `unitId`, `memberId`, `area`, `arrear`, `invoiceNumber`, `invoiceDate`, `dueDate`, `billingPeriod`, `total`, `interestOnArrear`, `totalDue`, `email`, `penalty`, `principalArrears`, `interestArrears`, `advancedAdjusted`, `netPending`) VALUES ('".$societyId."','".$unitId."','".$memberId."','".$area."','".$arrear."','".$invoiceNumber."','".$invoiceDate."','".$dueDate."','".$billingPeriod."','".$total."','".$interestOnArrear."','".$totalDue."','".$email."','".$penalty."','".$principalArrears."','".$interestArrears."','".$advancedAdjusted."','".$netPending."')");
$memo = $_REQUEST['memo'];
$charge = $_REQUEST['charge'];
$sql= mysqli_query($conn,"INSERT INTO `billdetail`(`biilId`, `memo`, `charge`) VALUES (LAST_INSERT_ID(),'".$memo."','".$charge."')");
$sql= mysqli_query($conn,"INSERT INTO `fintran`(`societyId`, `docId`, `docTypeName`, `docDate`, `unitId`, `unitName`, `memberId`, `memberName`, `comboId`, `ledgerId`, `ledgerName`, `debit`, `credit`, `netValue`) VALUES ('".$societyId."',LAST_INSERT_ID(),'bill','','".$unitId."','".$unitId."','".$memberId."','".$memberId."','','".$charge."','','','','')");
COMMIT;
插入数据后,我想要 billId
即 billdetails
和 fintran
table 中账单 table 的主键。但是通过这个查询,我只能在 billdetail
table 中得到它。在 fintran
table 中,我得到 billdetail
table 的主键。请帮助我。
No, you can't insert into multiple tables in one MySQL command. You can however use transactions.
检查这个:MySQL Insert into multiple tables? (Database normalization?)