【发布时间】:2020-10-28 08:41:17
【问题描述】:
我的 Azure SQL 数据库(Azure SQL 数据库 12.0.2000.8)中有一个没有任何限制的临时表。我想将 Staging 表中的数据插入到设置了多个约束的“真实”表中。插入数据时,我使用了那种语句
INSERT INTO <someTable> SELECT <columns> FROM StagingTable;
现在我只在违反某些约束时收到第一个错误。但是,对于我的用例,获取所有违规行为很重要,因此可以完全解决它们。
我尝试过使用TRY...CATCH 机制,但是,这将在第一个错误时抛出错误并运行catch 子句,但它不会继续处理其他数据。请注意,不应该插入没有违规的正确数据,因此可以在一个错误时回滚整个插入语句,但是,我希望查看所有违规以便能够全部纠正它们而无需多次运行插入语句得到所有错误的次数。
编辑: 需要检查的约束类型是外键约束、NOT NULL 约束、重复键。没有进行转换,因此无需检查转换。
【问题讨论】:
-
SQL Server 版本是多少?有哪些类型的约束?类型转换或外键违规?
-
它是一个 Azure SQL 数据库。我们不能选择版本,因为它是一个 PaaS 组件。但是,Microsoft 保证它始终在最新版本上运行。我读到较低版本纯粹是出于兼容性原因
-
好的,Microsoft SQL Azure 12.0.2000.8 和 Microsoft SQL Server 12.0.2000.8 之间存在(显着)差异;前者将使用最新功能,因为内部版本号不同(它是不同的产品)。
标签: sql sql-server azure-sql-database staging-table