关系: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