1

使用 SSDT 发布我的数据库后,我需要填充代码列表。因此,我在项目中添加了新的部署后脚本,并从中使用 SQLCMD :r 命令调用另一个脚本,每个脚本都将数据插入到一个表中。但是如果表已经被填满,就会违反主键约束并且整个设置被破坏。

如何抑制部署后脚本中的错误?:on error ignore不支持SQLCMD 命令。

4

2 回答 2

2

这是一个很好的例子,说明如何使用 MERGE 语句而不是原始 INSERT 来实现您正在寻找的东西。

http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project.aspx

于 2012-07-27T20:09:42.273 回答
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

没有你的表定义就不能更明确......

于 2012-04-10T13:16:59.397 回答