關係:students (1 can have N) addresses
更新同一個表中存儲過程更新後和INSERT
場景:學生可以有很多記錄,但只有一個相關記錄必須有「current
」字段設置爲「Yes
」(等價值是NULL
),所以下面的查詢應該每個學生總是隻返回一條記錄。
SELECT * FROM address WHERE student_id = 5 AND current = 'Yes'
問題: 人們有時標記多個記錄爲INSERT或UPDATE對同一個學生後「是」,所以我需要避免。在MySQL中使用觸發器或存儲過程的最佳方式是什麼?
如果UPDATE在「地址」表會發生那麼這應該某處運行,以紀念其他記錄爲NULL:UPDATE addresses SET current = NULL WHERE student_id = IN_student_id
如果INSERT發生在「地址」表那麼這應該某處運行,以紀念其他記錄爲NULL:UPDATE addresses SET current = NULL WHERE student_id = IN_student_id AND id <> IN_inserted_id
在此先感謝
將地址表的PK存儲爲學生表中的當前值是個不錯的主意。謝謝 – BentCoder