「データベース」を示す列で区切られたチケットを記録するテーブルがあります。各データベースを一意にインクリメントするように、列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私の理解では、一意のキーにより、次の適切な値がその場で計算されるだけなので、インクリメントする必要があるかどうかはわかりません。