2012-04-26 16 views
-1

私は顧客がDELETEステートメントを実行したいデータベースを持っています。しかし、データベース側では、レコードを削除する代わりに隠しておくだけです。トリガで拒否文を拒否するMySQL

BEFORE DELETE TRIGGERを使用して、レコードを削除する代わりににvisiblityフラグを変更できますか?

+0

お客様は、実際にはこれらのレコードはフラグによって隠されているに過ぎないものの、一部のレコードを削除したと考えて顧客を騙したいのですか? –

+0

はい、そうです。それで、彼らは電話して、間違ってすぐに復元できるものを誤って削除したと伝えます。さようなら、顧客がコースから離れる方法はありません。 – mortenstarck

+0

そして、顧客は、mysqlコマンドラインクライアントやphpMyAdminのような直接的なmysql操作を可能にするインターフェースを使用していますか?それともカスタムインターフェイスですか? –

答えて

1

私は、MySQLでこれを行うための唯一の方法だと思います(アレックスMonthyが示唆したように、このロジックが属する本当にどこということでしょうか?)に設定visibilityフラグ付きレコードを、挿入し直す後に削除トリガーを使用することです偽:

CREATE TRIGGER foo AFTER DELETE ON my_table FOR EACH ROW 
    INSERT INTO my_table (visibility,  colA,  colB,  colC) 
       VALUES ( false, OLD.colA, OLD.colB, OLD.colC); 

あなた(ちょうど例は存在しないプロシージャを呼び出し、トリガーがエラーを上げる作る)トリガ前から削除操作を中止することができますが、それはvisibilityを更新することができますしません必要に応じてフラグを立てます。

関連する問題