我喜欢使用 Upsert 存储过程,如果记录存在则更新记录,如果不存在则插入记录。如果没有它们,我需要首先确定记录是否存在,然后根据结果调用两个单独的存储过程。
在今天之前,当我创建一个名为 UpdateOrDeleteRow 的存储过程时,我从未真正考虑过这个问题。当我发现自己在名称中包含“或”时,我的 SRP 蜘蛛意识就开始发挥作用,我意识到这些 upserts 基本上是一回事。
这是否违反 SRP?如果可以,是否可以接受?如果没有,我该怎么办?
我意识到 SRP 是 OOP 原则,而 T-SQL 不是 OOP 语言,但该原则的基础似乎也应该适用于此。