1

「データベース」を示す列で区切られたチケットを記録するテーブルがあります。各データベースを一意にインクリメントするように、列databaseと列に一意のキーがあります(これを達成するための属性があります)。2 つの列を作成できないため、手動でインクリメントします (さらに、一意性というより複雑なタスクを処理したいと思います)。cidcidAUTO_INCREMENTidAUTO_INCREMENTAUTO_INCREMENT

これにより、基本的に私のデータは次のようになります。

-----------------------------
|  id  |  cid  |  database  |
-----------------------------
|    1 |    1  |          1 |
|    2 |    1  |          2 |
|    3 |    2  |          2 |
-----------------------------

これは完全にうまく機能します。

チケットを別のデータベースに「移動」できる機能を作ろうとしています。多くの場合、ユーザーは間違ったデータベースにチケットを入力する可能性があります。チケットを閉じて新しいチケットを完全に作成する (すべてのデータをコピーして貼り付ける) 必要はなく、もちろんユーザーにとって簡単にしたいと思います。

フィールドを改ざんすることなく、 databaseandフィールドを一意に変更できるようにしたいと考えています。フィールドへのリンクである他のテーブルに外部キー制約があるため、(または同様の)ことをしたい。これが、単純にor thenを実行しない理由です。他のすべてのテーブル データを削除してから再作成する必要がないようにするためです (ログ エントリ、トランザクション、予定など)。cididUPDATEidREPLACEDELETEINSERT

AUTO_INCREMENT(新しい値に基づいてdatabase) 次の一意の値を取得し、それを使用して目的の行を更新するにはどうすればよいですか?

たとえば、上記のデータセットで、最初のレコードを「データベース #2」に変更したいとします。どのクエリを作成しても、データを次のように変更する必要があります。

-----------------------------
|  id  |  cid  |  database  |
-----------------------------
|    1 |    3  |          2 |
|    2 |    1  |          2 |
|    3 |    2  |          2 |
-----------------------------

AUTO_INCREMENT私の理解では、一意のキーにより、次の適切な値がその場で計算されるだけなので、インクリメントする必要があるかどうかはわかりません。

4

1 に答える 1