我们为测试(mysql)和生产(oracle)系统使用不同的数据库。是否有一个常见的sql语句用于更新行(如果存在),如果不存在则插入?
此致 马克
答案 0 :(得分:2)
答案是否定的。对于MYSQL,它将是不同的,对于Oracle,它将是不同的。
在MYSQL中,它就像
INSERT INTO tabelname (id, name)
VALUES (1, 'abc')
ON DUPLICATE KEY UPDATE id = id;
在Oracle中,它就像
DECLARE
x NUMBER:=0;
BEGIN
SELECT nvl((SELECT 1 FROM tabelname WHERE name = 'abc'), 0) INTO x FROM dual;
IF (x = 1) THEN
INSERT INTO tabelname (1,'abc')
END IF;
END;
或者您可以像这样使用合并:
merge into tablename a
using (select 1 id, 'abc' name from dual) b
on (a.name = b.name)
when not matched then
insert( id, name)
values( b.id, b.name)