我的 Azure SQL 数据库(Azure SQL 数据库 12.0.2000.8)中有一个没有任何约束的临时表。我想将 Staging 表中的数据插入到设置了多个约束的“真实”表中。插入数据时,我使用一种语句
INSERT INTO <someTable> SELECT <columns> FROM StagingTable;
现在我只在违反某些约束时得到第一个错误。但是,对于我的用例,获取所有违规行为很重要,因此可以完全解决它们。
我尝试过使用TRY...CATCH
机制,但是,这将在第一个错误时引发错误并运行 catch 子句,但它不会继续处理其他数据。请注意,不应该插入没有违规的正确数据,因此可以在一个错误时回滚整个插入语句,但是,我希望查看所有违规以便能够全部纠正它们,而无需多次运行插入语句次得到所有错误。
编辑:需要检查的约束类型是外键约束、NOT NULL 约束、重复键。没有进行转换,因此无需检查转换。