-1

我有几个我不想在我的数据库中找到的关系(每周都会发现更多)。

例如:

如果此其他表中的此其他值设置为 true,则表小部件中的 A 列不能为空...

没有编写自己的系统来审核我的数据库并输出报告,有什么好的方法来解决这个问题吗?

我不得不认为我不是第一个遇到无法轻松编入 SQL Server 的业务限制的人......

注意:我不是在寻找执法系统。只是一个让我知道规则何时被打破的系统。

4

2 回答 2

1

我的猜测是您的这些业务规则数量有限,并且这些规则非常简单,就像您在下面描述的那样。

在这种情况下,我只需为每个业务规则创建一个存储过程,该过程将报告所有违反此规则的行。然后我会在每天或每周的某个时间运行所有这些计划,或者给我我需要的数据。

现在,如果你真的有很多这样的方法,那么这种方法可能不是最好的,因为它会允许大量的维护,并且可能会导致一次运行大量存储过程的性能问题。

于 2013-06-07T08:51:10.433 回答
0

您不应该将业务逻辑编码到数据库中,但如果您坚持,您可以查看触发器,这样在插入/更新时您可以进行检查或验证,然后允许插入、回滚或执行 X

更新:

根据何时以及多久需要通知您何时违反规则,您可以做几件事之一

  1. 有一个在数据库之外运行的应用程序并按计划来分析和报告违规行为
  2. 使用 SQL Server 代理创建一个作业来为您运行检查并提醒您
  3. 有一个触发器,每次发生违规时都会提醒您

使用选项#1,一切都可以在 db 之外完成,恕我直言,如果你需要一个完整的“警报”系统,如果你只需要记录或将一些数据插入到某个跟踪表中,使用 #2 和 #3 可以很简单像电子邮件等,如果你想做一些花哨的事情,你可能需要使用SQL CLR,或者只是电子邮件,那么你也可以尝试SQL Mail

于 2013-06-06T18:06:30.977 回答