更新或以其他方式在表中创建条目

时间:2016-04-25 17:44:33

标签: sql sql-server insert-update

我想在具有普通SQL(而不是MySQL)的表中更新或创建新条目。 我的表有列:T_ID,ITERATION,COMMENT

我知道我可以用:

更新我的表格
UPDATE TABLE
    SET ITERATION = ITERATION + 1
    WHERE T_ID = 1;

但是如果没有T_ID = 1的条目存在,我想创建一个ITERATION = 1和T_ID = 1且没有任何注释的条目。

这可以通过使用普通的SQL语句来实现吗?

2 个答案:

答案 0 :(得分:0)

您可能希望在存储过程中执行此操作。这样的事情,你要检查T_ID = 1是否存在任何东西。然后根据这个结论你要么更新或插入。

BEGIN TRAN
IF EXISTS (SELECT * FROM table WHERE T_ID = 1)
BEGIN
   UPDATE table SET ITERATION = ITERATION + 1 WHERE T_ID = 1
END
ELSE
BEGIN
   INSERT INTO table (T_ID, ITERATION, COMMENT)
   VALUES (1, 1, '')
END
COMMIT TRAN

答案 1 :(得分:0)

  

这可以通过使用普通的SQL语句来实现吗?

否 - 在一个语句中没有“upsert”(或Merge)的“标准”SQL构造。不同的SQL系统已经实现了执行“如果存在更新”操作的机制,例如MySQL的ON DUPLICATE KEY UPDATE或Oracle和SQL Server的MERGE语法,但在“标准”SQL中没有任何内容。