Mysql + PHP插入并从触发器获取最后插入ID

时间:2019-02-06 11:17:30

标签: php mysql dart flutter last-insert-id

对不起,我不是mysql的真正专家。

我有表事务(Trans_ID为PK,但没有自动递增),但是有transactioneq触发自动递增。

在表事务上,我放置了触发器以从表事务中获取Trans_ID

下面是触发代码:

CREATE
DEFINER=`root`@`localhost`
TRIGGER `pos`.`tg_transactions_insert`
BEFORE INSERT ON `pos`.`transactions`
FOR EACH ROW
BEGIN
  INSERT INTO transactionseq VALUES (NULL);
  SET NEW.ID_Transaction = CONCAT('IDT', LPAD(LAST_INSERT_ID(), 3, '0'));
END$$

并且我有php代码,可将代码插入到我的表中:


if($_SERVER['REQUEST_METHOD']=="POST"){
    $response = array();

    $ID_Employee = $_POST['ID_Employee'];
    $Name_Employee = $_POST['Name_Employee'];
    $ID_Customer = $_POST['ID_Customer'];
    $Table_Number = $_POST['Table_Number'];



    $insert = "INSERT INTO transactions
    (ID_Employee,Name_Employee,ID_Customer,Table_Number,ID_Outlet,CreatedBy_Transaction,CreatedDate_Transaction,Status_Transaction) 
    VALUES ('".$ID_Employee."','".$Name_Employee."','".$ID_Customer."','".$Table_Number."','1','".$ID_Employee."',NOW(),'OPEN')"; 

    if(mysqli_query($con, $insert)){
        $last_ID = mysqli_insert_id($con);
        $response['value']=1;
        $response['message']="Table berhasil dimulai".$last_ID;
        echo json_encode($response); 
    }
    else{
        $response['value']=0;
        $response['message']="Table gagal dimulai";
        echo json_encode($response); 
    }

}

因为我的表事务有一个触发器并且没有自动递增,所以我无法通过使用mysqli_insert_id($ con)获得最后一个Trans_ID。

请提出建议,如何获取我的最后一个插入的Trans_ID?并将该Trans_ID传递给我的flutter应用。

谢谢

0 个答案:

没有答案