覆盖从不采取行动限制在运行时级联

问题描述 投票:0回答:2

我觉得我有一个非常基本的/愚蠢的问题,但我从来没有看到/读/听说过在这个方向上任何东西。

说我有一个表的用户(用户ID,名称)和表格偏好(ID,用户id,语言)。这个例子是微不足道的,但可以扩展到多层次关系和方式更多的表的情况.. 当我的UI请求删除一个用户我首先要表明一个警告,说明还其偏好将被删除。如果在某一时刻数据库中获取更多的表和关系延长,但该软件没有相应调整(客户端没有更新)应该显示的通用消息。

我怎样才能实现呢?该UI无法了解整个数据结构,不应打扰走所有的关系手动删除所有记录不同。

我认为这是有约束。 约束会在第一次这样的约束将抛出可以由UI捕获的错误不采取行动。在UI收到确认后,约束应该成为一个级联。

不知怎的,我感觉像我得到这一切错了..

sql constraints cascade
2个回答
1
投票

我会做的是这样的:

  1. 约束是CASCADE
  2. 如果存在,该应用检查偏好。
  3. 如果他们这样做,显示警告。
  4. 如果不存在偏好,或警告被接受,删除客户端。

随时改变数据库的关系不会是一个好主意!

干杯,

RB。


0
投票

如果你担心用户没有意识到自己删除的全面影响,你可能要考虑不实际删除数据 - 而不是你可以简单地设置一个标志上一个名为列说:“marked_for_deletion”。 (条目随后可后来删除了一个安全的时间) 缺点是,你需要记住的其他查询筛选出显着的行。这可以通过创建过滤掉标记的行的表的视图,然后使用始终在查询视图来缓解。

© www.soinside.com 2019 - 2024. All rights reserved.