Oracle—依赖回滚进行数据验证

Oracle—依赖回滚进行数据验证,oracle,transactions,Oracle,Transactions,依靠oracleROLLBACK命令导入数据、验证数据然后执行ROLLBACK是否是良好做法 我已经为我们的ERP构建了一个数据导入程序,通过查看代码,他们将数据插入到真实的表中,进行验证,如果验证失败,他们将执行回滚。我总是在插入数据之前验证数据,但只是好奇这是否是一种可以依赖的公认方法?这里有几件事需要记住- 约束使我们能够保持数据完整性。这意味着约束允许我们在数据库级别本身强制执行业务规则(或至少是其中最基本的规则) commit或rollback是保存或撤消事务中所做更改的方法。如果在

依靠oracle
ROLLBACK
命令导入数据、验证数据然后执行
ROLLBACK
是否是良好做法


我已经为我们的ERP构建了一个数据导入程序,通过查看代码,他们将数据插入到真实的表中,进行验证,如果验证失败,他们将执行回滚。我总是在插入数据之前验证数据,但只是好奇这是否是一种可以依赖的公认方法?

这里有几件事需要记住-

  • 约束使我们能够保持数据完整性。这意味着约束允许我们在数据库级别本身强制执行业务规则(或至少是其中最基本的规则)

  • commit
    rollback
    是保存或撤消事务中所做更改的方法。如果在一系列成功运行的DML语句之后发出
    commit
    ,则会保留更改。
    rollback
    语句将撤消更改

  • 如果在一系列DML语句中,其中一条语句失败,则该特定语句的效果将回滚。例如,如果
    UPDATE
    语句更新了10行,并且其中一行违反了重要约束,则10行中的任何一行都不会更新。然而,上述声明的影响并没有被隐含地逆转

  • 为了保持数据完整性并按照业务要求保存数据,如果任何DML失败,您必须发出手动
    回滚
    语句

  • 您在程序中看到的是相同的实践。如果仔细查看代码,它不会在成功的事务后发出
    回滚
    ,而只会在失败的DML后发出。这确实是一个很好的实践,可以在失败时回退,只有在一切顺利时才做出承诺

  • 前端数据检查确实是任何应用程序的重要组成部分。这样可以确保输入的数据符合业务角色。即使在这种情况下,也必须应用约束以在数据库级别执行检查。当一些新手对前端进行更改并试图输入无效数据时,这尤其有用。当有人绕过应用程序并手动输入数据时,这也很有用。因此,在数据库级别设置约束总是必要的

问题是,它不能保证下一次(真实)调用数据不会违反某些约束。