检查行是否存在Update Record,否则在c ++中插入数据库

时间:2016-08-10 18:06:36

标签: sql-server

我想将一些记录添加到数据库但我希望在用户

在开头单击按钮程序检查是否存在行更新记录,否则插入表

  

我在Google搜索了这个,但是只找到了存储的SQL语句   程序不是 C ++ 代码或注释

     

注意:我使用Qt FrameWork

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

脚本#1。检查记录是否已存在:

SELECT COUNT(*) From <YourTable>
WHERE ID = 12345;

脚本#2。如果脚本#1返回值> 0,则记录已存在。你做了更新:​​

UPDATE <YourTable> SET 
Value1 = 'ABC',
Value2 = 'XYZ',
Value3 = 123
WHERE ID = 12345;

脚本#2。如果脚本#1返回值= 0,则记录不存在。你插入:

INSERT INTO <YourTable> (ID,Value1,Value2,Value3) 
VALUES (12345,'ABC','XYZ',123);

答案 1 :(得分:0)

以下是您可以使用的基本MERGE()

MERGE TargetTable AS TARGET
USING
   (SELECT PrimaryKeyColumn, Column2, Column3 FROM YourUserInput) AS SOURCE
ON
   TARGET.PrimaryKeyColumn= SOURCE.PrimaryKeyColumn
WHEN
   MATCHED THEN UPDATE
   SET TARGET.Column1 = SOURCE.Column1, TARGET.Column2 = SOURCE.Column2
WHEN
   NOT MATCHED BY TARGET THEN
   INSERT (PrimaryKeyColumn, Column2, Column3) 
   VALUES (SOURCE.PrimaryKeyColumn, SOURCE.Column2, SOURCE.Column3)
--OUTPUT $action --uncomment this line to return what happens to the record
;

如果您出于某种原因反对MERGE()

IF (SELECT COUNT(*) FROM YourTable WHERE PrimaryKeyColumn = UserInputKey) = 0
 BEGIN
   INSERT INTO YourTable (PrimaryKeyColumn, Column2, Column3)
   VALUES (2,'some value','another value')
 END
ELSE
 BEGIN
   UPDATE YourTable
   SET Column2 = 'some value', Column3 = 'another value'
   WHERE PrimaryKeyColumn = UserInputKey
 END