如何仅当不存在相同值时才向 table 插入新行,否则更新相关内容?
How to insert a new row to a table only if when same value does not exist, else update the related contents?
Table:
emergency_tab (user_id
, emergency_no
)
和
Constraints (user_id
[primary key
])
当收到 id
和 no
时,我需要将这些值 insert
到 [=20] 中的 user_id
和 emergency_no
列=].如果存在具有相同 user_id
的列,我只想更新 emergency_no
,不需要 insert
新行。
我正在使用 Visual Studio 2010
和 MS SQL Server 2008
内置于 vs10
我相信这叫做 "upsert",您可以使用 MERGE 关键字,例如:
MERGE [devLaserViso].[dbo].[Machine] t WITH (HOLDLOCK)
USING [devLaserViso].[dbo].[TempMachine] s
ON (s.MachineName = t.MachineName)
WHEN MATCHED THEN
UPDATE SET t.MachineName = s.MachineName,
t.ProgramName =s.ProgramName
WHEN NOT MATCHED BY TARGET THEN
INSERT (MachineName,ProgramName) VALUES (s.MachineName, s.ProgramName);
来自
正在运行
IF (SELECT COUNT(*) FROM emergency_tab WHERE user_id='?')<>0
BEGIN
--UPDATE
END
ELSE
BEGIN
--INSERT
END
Table:
emergency_tab (
user_id
,emergency_no
)
和
Constraints (
user_id
[primary key
])
当收到 id
和 no
时,我需要将这些值 insert
到 [=20] 中的 user_id
和 emergency_no
列=].如果存在具有相同 user_id
的列,我只想更新 emergency_no
,不需要 insert
新行。
我正在使用 Visual Studio 2010
和 MS SQL Server 2008
内置于 vs10
我相信这叫做 "upsert",您可以使用 MERGE 关键字,例如:
MERGE [devLaserViso].[dbo].[Machine] t WITH (HOLDLOCK)
USING [devLaserViso].[dbo].[TempMachine] s
ON (s.MachineName = t.MachineName)
WHEN MATCHED THEN
UPDATE SET t.MachineName = s.MachineName,
t.ProgramName =s.ProgramName
WHEN NOT MATCHED BY TARGET THEN
INSERT (MachineName,ProgramName) VALUES (s.MachineName, s.ProgramName);
来自
正在运行
IF (SELECT COUNT(*) FROM emergency_tab WHERE user_id='?')<>0
BEGIN
--UPDATE
END
ELSE
BEGIN
--INSERT
END