「データベース」を示す列で区切られたチケットを記録するテーブルがあります。各データベースを一意にインクリメントするように、列database
と列に一意のキーがあります(これを達成するための属性があります)。2 つの列を作成できないため、手動でインクリメントします (さらに、一意性というより複雑なタスクを処理したいと思います)。cid
cid
AUTO_INCREMENT
id
AUTO_INCREMENT
AUTO_INCREMENT
これにより、基本的に私のデータは次のようになります。
-----------------------------
| id | cid | database |
-----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
-----------------------------
これは完全にうまく機能します。
チケットを別のデータベースに「移動」できる機能を作ろうとしています。多くの場合、ユーザーは間違ったデータベースにチケットを入力する可能性があります。チケットを閉じて新しいチケットを完全に作成する (すべてのデータをコピーして貼り付ける) 必要はなく、もちろんユーザーにとって簡単にしたいと思います。
フィールドを改ざんすることなく、 database
andフィールドを一意に変更できるようにしたいと考えています。フィールドへのリンクである他のテーブルに外部キー制約があるため、(または同様の)ことをしたい。これが、単純にor thenを実行しない理由です。他のすべてのテーブル データを削除してから再作成する必要がないようにするためです (ログ エントリ、トランザクション、予定など)。cid
id
UPDATE
id
REPLACE
DELETE
INSERT
AUTO_INCREMENT
(新しい値に基づいてdatabase
) 次の一意の値を取得し、それを使用して目的の行を更新するにはどうすればよいですか?
たとえば、上記のデータセットで、最初のレコードを「データベース #2」に変更したいとします。どのクエリを作成しても、データを次のように変更する必要があります。
-----------------------------
| id | cid | database |
-----------------------------
| 1 | 3 | 2 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
-----------------------------
AUTO_INCREMENT
私の理解では、一意のキーにより、次の適切な値がその場で計算されるだけなので、インクリメントする必要があるかどうかはわかりません。