0
我有一张从数据库表导入221行的表。每当我在HTML Table页面内动态地添加一行时,我希望它能够拉取MAX ID,所以在这种情况下为221,并将其添加1,因此将MR_ID设置为222.我需要这样做,因为每个ID都必须独一无二。每当我向表中添加一行并在数据库中查看它时,它都显示为NULL。我对此有点小小的想法,但似乎并没有奏效。如果您需要比我发布的任何更多的代码,请告诉我,我会提供。谢谢!在SQL Server中为自动递增ID设置MAX
<?php
$MR_ID = $_POST['MR_ID'];
$MR_Name = $_POST['MR_Name'];
$Buyer_ID = $_POST['Buyer_ID'];
$MR_POC_N = $_POST['MR_POC_N'];
$MR_POC_E = $_POST['MR_POC_E'];
$MR_POC_P = $_POST['MR_POC_P'];
$host="xxxxxxx";
$dbName="xxxx";
$dbUser="xxxxxxxxxxx";
$dbPass="xxxxxxxxx";
$pdo = new PDO("sqlsrv:server=".$host.";Database=".$dbName, $dbUser, $dbPass);
$MR_ID = "Select MAX(MR_ID) + 1 FROM Stage_Rebate_Master";
$sql = "INSERT INTO Stage_Rebate_Master (MR_ID, MR_Name, Buyer_ID, MR_POC_N, MR_POC_E, MR_POC_P) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute(array($MR_ID, $MR_Name, $Buyer_ID, $MR_POC_N, $MR_POC_E, $MR_POC_P));
echo json_encode($result);
?>
MAX + 1是受竞争条件。为什么不将MR_ID设置为标识或auto_increment并让DB处理它以避免竞争条件? – xQbert
我确实有另一列自动递增以及可以用作实际的ID ....但是,这个MR_ID列用作查找整个数据库,所以我不能只有NULL值 – Rataiczak24
似乎是一种奇怪的方式在非键值上关联表......我想你可以在更新之前使用触发器将MR_ID设置为自动递增的值。 (假设这个数据库管理系统使用触发器) – xQbert