可能重复:
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
答案 0 :(得分:3)
您可能需要查看MERGE (Transact-SQL)语句。
基于目标表执行插入,更新或删除操作 关于与源表的连接的结果。例如,你可以 通过在一个表中插入,更新或删除行来同步两个表 表基于另一个表中的差异。
答案 1 :(得分:2)
你可以这样做:
IF EXISTS(SELECT * FROM MyTable WHERE...)
--value exists perform update
BEGIN
UPDATE...
END
ELSE
--value doesnt exist perform insert
BEGIN
INSERT ...
END
答案 2 :(得分:1)
您应首先使用IF EXISTS语句检查行是否存在,如下所示:
IF EXISTS (SELECT * FROM Server_Status WHERE Site = @Site)
BEGIN
-- UPDATE statement.
END
ELSE
-- INSERT statement.
END