关系 : students (1 can have N) addresses
场景:学生可以有许多记录,但只有一个关联记录必须将“ 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
提前致谢