sql - 在这种情况下我应该如何工作。我应该使用触发器还是保留用户来管理

标签 sql sql-server sql-server-2005

我正在创建一个应用程序,在其中使用存储过程来实现我的逻辑。

现在我需要知道的是 - 我希望我的数据库不包含任何无效条目,为此我应该创建触发器,用于实现我的数据验证逻辑,以便当 FailPasswordAttemptCount 更改时到某个值,那么我应该通过触发器相应地在相应的 IsLocked 列中进行更改,还是将其留给 dba 来管理。

例如

if FailPassowrdAttemptCount > 3
  IsCaptchaActivated=True
if FailPasswordAttemptCount>6
  IsLocked=true

现在,如果 dba 将 FailPasswordAttemptCount 的值更改为 4,而不将 IsCaptchaActivated 更改为 true,那么这将为我的前端创建无效条目。 那么我应该通过触发器来管理它还是应该将其留给 dba 来进行正确的输入。

虽然这种类型的条目不可能通过前端进行,但如果任何人具有访问数据库的权限,则可以直接通过数据库进行更改。 为此,我应该将其留给用户还是应该通过触发器进行管理。 我想让我的数据库在所有情况下都保持一致。

最佳答案

我会做以下事情:

  • 将数据验证逻辑放入存储过程
  • 使存储过程成为应用程序与表交互的唯一方式
  • 将所需的代码放入存储过程中。

随着应用程序业务逻辑复杂性的增加,基于触发器的编程范例变得越来越难以编码和维护。

但是,如果您绝对确定只会有这样的简单逻辑,则可以将其放入触发器中,因为这只需要对应用程序与数据库交互的方式进行最小的更改。

关于sql - 在这种情况下我应该如何工作。我应该使用触发器还是保留用户来管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1901466/

相关文章:

.net - ASP.net 报表查看器/报表是否需要 SQL Server 上的 Reporting Services

c# - SQL 更新不起作用

sql - 如何用面向对象的 Perl 组装 SQL?

sql - 如何 self 加入/分组以获得总和?

mysql - SQL查询执行语句

c# - 为什么标识规范给出错误结果 SQL Server (asp net)

sql - 在我的查询中使用 datepart 添加一年并减去一天

c# - 为什么 Entity Framework Core 2.2 C# 在使用现有嵌套实体插入新实体时会响应错误

asp.net - 我可以将 ASP.NET 成员身份与 SQL Server Compact Edition 一起使用吗?

sql - 为什么 T-SQL 没有错误?