我有几个关系(每周发现更多),我不想在我的数据库中。
例如:
如果另一个表中的另一个值被设置为true,则表Widget中的列A不能为null…
缺乏编码我自己的系统来审计我的数据库和输出报告,有什么好方法来处理这个?
我必须认为我不是第一个有业务约束的人,不能轻易地编入SQL Server…
注意:我不是在寻找一个执行系统。只是一个系统,让我知道什么时候违反了规则。
我的猜测是这些业务规则的数量有限,并且这些规则非常简单,就像您下面描述的那样。
在本例中,我只为每个业务规则创建一个存储过程,该存储过程将报告符合该规则的所有行。然后我每天或每周在某个时间运行所有这些计划,或者给我需要的数据。
现在,如果你真的有很多这样的存储过程,那么这种方法可能不是最好的,因为它会允许大量的维护,并且可能会在一次运行大量存储过程时出现问题。
您不应该将业务逻辑编码到数据库中,但如果您坚持,您可以查看触发器,这样在插入/更新时您可以执行检查或验证,然后允许插入,回滚或执行X
更新:
根据你何时以及多久需要被告知规则何时被打破,你可以做以下几件事中的一件,我想到这里有三个简单的方法来实现你所需要的
- 有一个运行在数据库之外的应用程序分析和报告违反 的依据
- 用SQL Server Agent创建一个作业,为您运行检查并提醒您
- 有一个触发器,提醒你每次违规发生
选项#1,一切都可以在db之外完成,我认为是最简单的,#2和#3,如果你只需要记录或插入一些数据到一些跟踪表可以很简单,如果你想要一个完整的"警报"系统,如电子邮件等,你可能需要涉及SQL CLR,如果你想做一些花,或者只是电子邮件,那么你也可以尝试SQL邮件