我正在寻找一个 SQL 语句或存储过程来将一行中的列子集的值重置为其默认值(在此定义的地方)或为空。该行中还有其他列我不想重置,否则我可以删除该行并创建一个新行,该行将使用各种默认值进行初始化......这就是我想要的效果,但仅适用于列的特定子集。
从概念上讲,我正在寻找
UPDATE eirProj
SET <all columns named like 'paf%'> TO THEIR DEFAULT OR NULL
WHERE prjId=@prjId
或者至少
UPDATE eirProj
SET pafAuth=<pafAuth default or NULL>, pafComp=<pafComp default or NULL>, paf...
WHERE prjId=@prjId
我试图避免在两个地方(表定义和此重置代码)对默认值进行冗余硬编码。理想情况下但不太重要的是,我希望避免对列名进行硬编码,因此如果子集通过添加、删除或重命名列而发生更改,它仍然可以工作。
我在 SQL Server 中工作,如果这是唯一的方法,那么特定于 T-SQL 的解决方案是可以的。