我想将一些记录添加到数据库但我希望在用户
时在开头单击按钮程序检查是否存在行更新记录,否则插入表
我在Google搜索了这个,但是只找到了存储的SQL语句 程序不是 C ++ 代码或注释
注意:我使用Qt FrameWork
有人可以帮我吗?
答案 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