我已经看到一些问题,开发人员在插入之前要求检查记录是否已经存在以避免主键约束违规...这不是一个大问题恕我直言。但是,如果我想检查的条件不是为了避免DB错误,那么如果在插入期间条件存在则不会引发DB错误。
例如,一个具有多个状态值的大型非规范化表,但我只想允许插入一个只能一次更改单个状态值列状态的新行。
列可能类似于:
id
animal_id
health_problem_id
treatment_plan
treatment_approved
treatment_scheduled
treatment_in_progress
treatment_complete
who_updated
when_updated
当用户在其应用程序视图中更新状态字段时,其他未更改的信息将用作插入的一部分,如果与当前看到的匹配,否则将通知他们,然后他们可以查看当前信息并重试。
例如,这会阻止两个不同的用户安排两次,而不会立即通知其中一个用户。
现在让我们假装这个表将被大量使用(我的例子可能不是最好的......)。对于那些具有惊人想象力的人,我们也假设人们有可能同时在同一种动物身上工作。我们还假设数据完整性很重要。
显然,如果它将同时使用并且严重锁定整个表不是一个好的解决方案,但肯定会确保数据的完整性。
注意:我的例子就是一个例子,这不是我对动物数据做的事情:)
关于如何使用现有关系数据库解决这个问题的意见和/或细节当然是首选。