2016-11-21 24 views
0

データベーステーブルから221行をインポートするテーブルがあります。 HTMLテーブルページ内で行を動的に追加するたびに、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); 

?> 
+2

のように試すことができます。 MR_IDをIDまたはauto_incrementに設定し、競合状態を回避するためにDBで処理するのはどうでしょうか? – xQbert

+0

私は自動的にインクリメントし、実際のIDとして使用できる別の列を持っています....しかし、このMR_ID列はデータベース全体のルックアップとして使用されているので、NULL値を持つことはできません – Rataiczak24

+0

キー以外の値にテーブルを関連付ける...私はあなたが更新前に自動インクリメントされた値にMR_IDを設定するためにトリガを使うことができると思います。 (このDBMSがトリガを使用していると仮定して) – xQbert

答えて

0

あなたは最大+ 1は、レースの条件に従うものとし、この

$sql = "INSERT INTO Stage_Rebate_Master (MR_ID, MR_Name, Buyer_ID, MR_POC_N, MR_POC_E, MR_POC_P) SELECT ISNULL(MAX(MR_ID)+1,1), ?, ?, ?, ?, ? FROM Stage_Rebate_Master"; 
$stmt = $pdo->prepare($sql); 
$result = $stmt->execute(array($MR_Name, $Buyer_ID, $MR_POC_N, $MR_POC_E, $MR_POC_P)); 
+0

私はこれを実行するたびに、私は内部サーバーのエラーを取得...私はそれがクエリとは何かを持って推測 – Rataiczak24

関連する問題