【发布时间】:2012-09-17 06:20:46
【问题描述】:
可能重复:
Solutions for INSERT OR UPDATE on SQL Server
Only inserting a row if it's not already there
我的标题几乎解释了我想要做的事情,但我会更详细地介绍。我正在创建一个存储过程,在调用它时首先检查该行是否已经存在(通过比较两个参数),如果存在,它将更新该行中的特定列,如果该行不存在它将在表中插入一个新行。
BEGIN
SELECT
(
CASE WHEN [Site] = @site and Plant = @plant
then
UPDATE [Status]
FROM Server_Status
WHERE [Site] = @site
ELSE
Insert into Server_Status(Name, [Path], [Site], Plant, [Status])
Values (@name, @path, @site, @plant, @status)
end
)
FROM Server_Status
END
是我到目前为止所拥有的,但不起作用(显然)。有没有比我有更多 SQL 知识的人有什么建议?
-J
【问题讨论】:
-
Case is not a control-of-flow method SQL Server 是什么版本?
-
您还需要修正您的
UPDATE语句需要采用UPDATE MyTable SET MyField=...的形式 -
SQL Server 2008/SSMS,感谢其他线程也看马丁
标签: sql sql-server-2008 tsql insert