1
我怎样才能生成脚本,而不是手动编写MSSQL脚本数据插入或更新
if exists (select ... where id = 1)
insert ...
else
update ...
很无聊做,与多条记录!
使用management studio生成脚本'仅数据'仅生成插入。因此,针对现有的db运行会导致主键出错。
我怎样才能生成脚本,而不是手动编写MSSQL脚本数据插入或更新
if exists (select ... where id = 1)
insert ...
else
update ...
很无聊做,与多条记录!
使用management studio生成脚本'仅数据'仅生成插入。因此,针对现有的db运行会导致主键出错。
对于SQL 2008年起,你可以开始使用了CTE
一个典型的ID /描述查找表一个简单的例子沿Merge
声明
WITH stuffToPopulate(Id, Description)
AS
(
SELECT 1, 'Foo'
UNION SELECT 2, 'Bar'
UNION SELECT 3, 'Baz'
)
MERGE Your.TableName AS target
USING stuffToPopulate as source
ON (target.Id = source.Id)
WHEN MATCHED THEN
UPDATE SET Description=source.Description
WHEN NOT MATCHED THEN
INSERT (Id, Description)
VALUES (source.Id, source.Description);
合并报表有一堆的其他功能是有用(如NOT MATCHED BY DESTINATION
,NOT MATCHED BY SOURCE
)。文档(上面链接)会给你更多的信息。
[Atomic UPSERT in SQL Server 2005]可能的重复(http://stackoverflow.com/questions/2522379/atomic-upsert-in-sql-server-2005) –