我有一个复杂的要求,我确实尝试将其推离数据库而没有成功。
我的环境基于Azure数据工厂+ SQL服务器。
基本上,我有一个源表和一个目标表,在从源插入到目标之前,我必须:
验证每个单元格。验证实际上是复杂的,基于一组动态函数,这些函数根据列数据类型,长度,表等读取验证逻辑,还需要验证哪些列以及它们需要多少列。
给定的列可能需要多个验证(还有另一个表指定要应用于每个列的验证)。
如果未通过给定单元格的验证,则需要将其记录到审核表中,并将该值设置为null或空白以允许插入到我的目标表中。
出于说明目的,可以说我只想验证列A是否为整数,作为验证1的一部分,如果其小于150作为验证2的一部分,并且列C不包含字符'A'作为验证验证1.
我猜你知道为什么我试图将其从SQL中推开。基本上我需要做三个嵌套循环:
无论我多么努力地思考,我仍然看不到使用基于SET的操作来做到这一点,即使使用循环,我也看不到如何做到这一点。据我所知,您不能在一个循环中嵌套一个循环(更不用说会降低性能)。
我看到的唯一选择是使用INSTEAD-OF-TRIGGER来为每条记录执行此操作,但是我仍然不得不遍历列和规则。
有什么想法吗?