2

特定の行を削除すると、次の行が更新される可能性がある MySQL の方法/アプローチはありますか? 私が何を意味するかを説明するために、たとえばここにテーブルがあるとします:

+--------------+
|  id  | order |
+--------------+
|  115 |     1 |
|  116 |     2 |
|  117 |     3 |
|  118 |     1 |
|  119 |     2 |
|  120 |     6 |
|  121 |     7 |
|  122 |     8 |
+--------------+

ドロップしようとしていますid = 117。アクションが成功した場合、id = 118その順序を 1 から 3 に変更します。これが現在のドロップされた順序ですid = 117。次に、id = 119次数 4、次にid = 1205 などを作成します。

PHPプログラムにある種の順序付け行があるため、これを行っています。

4

2 に答える 2

1

あなたの場合、行ID 118または119を削除すると、テーブルの最後まで118,119,120などを変更する必要があるため、注文列を完全に再入力する必要があります

 update order1,(select @rownum:=0)dummy set order1 = 
(@rownum =@rownum+1);

この場合、118を削除すると

Delete from YourTable where id = 118

上記の更新スクリプトを実行すると、動作します

于 2012-05-24T11:02:14.383 に答える
0

MySQL 5 以降が必要です。MySQL 5 以降では、トリガーがあります。トリガーは、特定のテーブルで挿入、更新、または削除アクションが発生したときに起動または実行されるプログラムです。したがって、削除された行データ テーブル (マジック テーブルと呼ばれる) を意味する場所の後に ID を持つ行を選択する、同じテーブル上で開くことができるBEFORE" " " " トリガーを作成できます。次に、必要なコマンドを発行して、関連する行を更新するだけです。DELETEcursorOLD.idOLDUPDATE

削除された行データは として参照できますOLD.col_nameINSERTまたはトリガーでは、挿入されたデータを参照するためにUPDATEアクセスすることもできます。NEW.col_nameトリガーでのみ、とマジック テーブルUPDATEの両方にアクセスできます。NEWOLD

リンク: MySQL トリガー カーソル

于 2012-05-24T04:25:41.370 に答える