私は、学生が特定の科目についてフィードバックを与えることができるフィードバックフォームを開発しています。学生の入学番号が保存されている「ID、一意の番号、パスワード」の3つのフィールドを持つテーブルがあります。今ここに私が欲しいものがあります。各学生がフィードバックの提供を完了するとすぐに、テーブルから特定のデータを自動的に削除する必要があります。助けてください。
2 に答える
トリガーを使用する前に説明したように。INSERT
トリガーをクリックするだけで、学生のフィードバックを記録する表の後に発生するトリガーを作成できます。あなたはこのようなことをすることができます
トリガーを使用することが良い習慣であることに私はあまり同意しません。トリガーはビジネス ロジックであり、そのロジックはコードに実装する必要があります。アプリとデータベースでビジネス ロジックを分離すると、次の開発者がどこを見ればよいかわからず、作業が難しくなります。それらを使用することが実行可能であると私が考える唯一の理由は、分散データベースでそれらを相互に更新し続けるために使用される場合です。
これは で実行できますがJOIN
、上記のコメントで言及したため、ここでトリガーを示します。
学生のフィードバック データを格納する別のテーブルがあるとします。この例students_feedback
では、それともう一方を呼び出しましょう。students_admission
MySQL Triggersを使用して、データベースから学生の入学データを自動的に削除しますON INSERT
。フィードバック データが students_feedback テーブルに格納されるとすぐに INSERT イベントがトリガーされるため、on createを使用する必要があります。
たとえば、次のようになります。
CREATE TRIGGER delete_admission AFTER INSERT
ON students_feedback FOR EACH ROW
BEGIN
DELETE FROM students_admission WHERE students_admission.id=OLD.id LIMIT 1;
END;
ここで必要な DELETE クエリを使用します。
注: MySQL 5.0.10 より前では、トリガーに名前によるテーブルへの直接参照を含めることはできません。