我想在具有普通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语句来实现吗?
答案 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中没有任何内容。