4

私は2つの異なるテーブルを手に入れました:

表1

ID
AK001 
AK001 
AK001 

(上記はAK001、AK002、AK003などである必要があります...)

表2

LastNum
 1

表1:テーブル1の更新ID = xx + RIGHT('....' +())など

表2:UPDATE table2 SET LastNum = LastNum + 1(これは機能しますが、新しいフォームを作成するときに間違った詳細を入力すると、まだ保存されていません。+1も表示されます)

私の質問は、表2が更新された後、表1を自動インクリメントして更新する方法です。私が直面しているのはtable1なので、table2が更新されたときに同じ番号を教えてください。助けてください!

4

2 に答える 2

3

varchar ではなく INT を主キーとして使用することを検討する必要があります。次に、そのフィールドを外部キーとして使用します。

VARCHAR をどのタイプのキーとしても使用しない理由についての詳細な回答を次に示します。

ストア ID を varchar として保存し続けます。両方のテーブルに新しいフィールドを追加するだけです。メインのテーブルでは IDENTITY であることを確認してください。自動インクリメントされます。

主キーとして VARCHAR を使用することについては、多くの意見があります。解決しようとしている問題を注意深く分析する必要があります。そしてもちろん、何も変更せず、すでに持っているもので作業することはできません。その場合、@sgeddes によって提案されているように、トリガーとしていくつかの回避策を使用する必要があります。

于 2013-01-21T07:48:44.687 に答える
1

Table1 が常に Table2 の LastNum フィールドに対応する XXX で終わると仮定すると、aTriggerが最も効率的であるように思えます。

どの RDBMS を使用していますか?

MySQL の場合:

CREATE TRIGGER myTrigger BEFORE INSERT ON Table2
  FOR EACH ROW BEGIN
    //Here you should use NEW.Lastnum to UPDATE your Table1
    // update table1 set ID = xx + RIGHT('....'+())
  END;

SQLサーバー:

CREATE TRIGGER myTrigger 
ON Table2
AFTER INSERT
AS
   //Here you should use INSERTED table (Lastnum column) to UPDATE your Table1
   // update table1 set ID = xx + RIGHT('....'+())
GO

RDBMS 固有の他の構文を検索できるはずです。

幸運を。

于 2013-01-21T07:45:23.457 に答える