2012-02-09 116 views
0

私はtbl_faultsと呼ばれるSQL Serverデータベーステーブルを持っています。そのテーブルのfault_idはプライマリ(int)で自動インクリメントされます。同じテーブルに私はfault_reference(int)と呼ばれる別のフィールドがあり、自動インクリメントされません。SQLテーブルの最終更新行を取得

テーブルにデータを入力するとき、fault_referenceの値はfault_idと同じ値にする必要があります。

誰も私にこれを行う方法を提案することはできますか?

$sql='SELECT Top 1 FROM "tbl_faults" ORDER BY "fault_id"'; 

私はfault_idの最後の更新値を取得し、新しい行を挿入するときに、それを使用するためにこれを使用しようとしていたが、これは動作するようには思えません。

答えて

0

私はあなたが私はあなたが2つのメソッドを使用することができると思うあなたのレコードを更新するには

$sql='SELECT Top 1 FROM "tbl_faults" ORDER BY "fault_id" DESC '; 

ことで、これを取得することができると思います。挿入が

  • セットfault_referenceのint型のNULL可に行われた後、行を更新するためにトリガを書く

    1. 。次に、行をfault_referenceがfault_referenceであるfault_idとして更新するための更新クエリを書き込みます。

    これは単なるアイデアです。チェックしてください。

  • 2
    SELECT fault_id FROM tbl_faults ORDER BY fault_id DESC LIMIT 1 
    

    最後に挿入されたIDを示す必要があります。

    +1

    SQL Serverには 'LIMIT'節はありません。 –

    0

    私は、SCOPE_IDENTITY関数を使用して、同じスコープ内のID列に挿入された最後のID値を返す関数を使用することをお勧めします。スコープとは、ストアドプロシージャ、トリガ、ファンクション、バッチなどのモジュールです。したがって、同じストアド・プロシージャ、ファンクションまたはバッチ内にある場合、2つのステートメントは同じスコープにあります。
    2つのバッチで実行すると、fault_idが別のバッチでインクリメントされる可能性があります。

    関連する問題