我需要在使用SSDT发布数据库后填充代码列表。所以我在项目中添加了新的部署后脚本,并从中使用SQLCMD:r命令调用另一个脚本,每个脚本都将数据插入到一个表中。但是如果表已经填满,则会违反主键约束并且整个设置被破坏。
如何在部署后脚本中抑制错误?不支持SQLCMD命令:on error ignore
。
答案 0 :(得分:2)
以下是如何使用MERGE语句而不是原始INSERT实现所需内容的一个很好的示例。
答案 1 :(得分:0)
为什么不修改脚本以避免重新插入现有值?使用公用表表达式,你会得到类似的东西:
;with cte as (select *, row_number() over (partition by ... order by ...) as Row from ... )
insert into ...
select ...
from cte where not exists (...) and cte.Row = 1
如果没有表定义,就不能更明确......