Oracle—依赖回滚进行数据验证
依靠oracleOracle—依赖回滚进行数据验证,oracle,transactions,Oracle,Transactions,依靠oracleROLLBACK命令导入数据、验证数据然后执行ROLLBACK是否是良好做法 我已经为我们的ERP构建了一个数据导入程序,通过查看代码,他们将数据插入到真实的表中,进行验证,如果验证失败,他们将执行回滚。我总是在插入数据之前验证数据,但只是好奇这是否是一种可以依赖的公认方法?这里有几件事需要记住- 约束使我们能够保持数据完整性。这意味着约束允许我们在数据库级别本身强制执行业务规则(或至少是其中最基本的规则) commit或rollback是保存或撤消事务中所做更改的方法。如果在
ROLLBACK
命令导入数据、验证数据然后执行ROLLBACK
是否是良好做法
我已经为我们的ERP构建了一个数据导入程序,通过查看代码,他们将数据插入到真实的表中,进行验证,如果验证失败,他们将执行回滚。我总是在插入数据之前验证数据,但只是好奇这是否是一种可以依赖的公认方法?这里有几件事需要记住-
- 约束使我们能够保持数据完整性。这意味着约束允许我们在数据库级别本身强制执行业务规则(或至少是其中最基本的规则)
或commit
是保存或撤消事务中所做更改的方法。如果在一系列成功运行的DML语句之后发出rollback
,则会保留更改。commit
语句将撤消更改rollback
- 如果在一系列DML语句中,其中一条语句失败,则该特定语句的效果将回滚。例如,如果
语句更新了10行,并且其中一行违反了重要约束,则10行中的任何一行都不会更新。然而,上述声明的影响并没有被隐含地逆转UPDATE
- 为了保持数据完整性并按照业务要求保存数据,如果任何DML失败,您必须发出手动
语句回滚
- 您在程序中看到的是相同的实践。如果仔细查看代码,它不会在成功的事务后发出
,而只会在失败的DML后发出。这确实是一个很好的实践,可以在失败时回退,只有在一切顺利时才做出承诺回滚
- 前端数据检查确实是任何应用程序的重要组成部分。这样可以确保输入的数据符合业务角色。即使在这种情况下,也必须应用约束以在数据库级别执行检查。当一些新手对前端进行更改并试图输入无效数据时,这尤其有用。当有人绕过应用程序并手动输入数据时,这也很有用。因此,在数据库级别设置约束总是必要的