使用 SSDT 发布我的数据库后,我需要填充代码列表。因此,我在项目中添加了新的部署后脚本,并从中使用 SQLCMD :r 命令调用另一个脚本,每个脚本都将数据插入到一个表中。但是如果表已经被填满,就会违反主键约束并且整个设置被破坏。
如何抑制部署后脚本中的错误?:on error ignore
不支持SQLCMD 命令。
使用 SSDT 发布我的数据库后,我需要填充代码列表。因此,我在项目中添加了新的部署后脚本,并从中使用 SQLCMD :r 命令调用另一个脚本,每个脚本都将数据插入到一个表中。但是如果表已经被填满,就会违反主键约束并且整个设置被破坏。
如何抑制部署后脚本中的错误?:on error ignore
不支持SQLCMD 命令。
这是一个很好的例子,说明如何使用 MERGE 语句而不是原始 INSERT 来实现您正在寻找的东西。
为什么不修改脚本以避免重新插入现有值?使用公用表表达式,您会得到类似的东西:
;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
没有你的表定义就不能更明确......