使用sql如何插入数据,但如果它';已存在更新数据

使用sql如何插入数据,但如果它';已存在更新数据,sql,upsert,Sql,Upsert,我想添加它-如果存在更新或插入 所以,插入是有效的,但我只想插入新值,若这个东西已经在这里,我想更新它。我这里的代码只插入数据,不知道什么 BEGIN DECLARE das int; SELECT dasaxeleba.id INTO das FROM dasaxeleba WHERE dasaxeleba.barcode = NEW.barcode; INSERT INTO sawyobi(das_id,raodenoba,tvitgirebuleba,gasayidi1,gasayidi2

我想添加它-如果存在更新或插入

所以,插入是有效的,但我只想插入新值,若这个东西已经在这里,我想更新它。我这里的代码只插入数据,不知道什么

BEGIN
DECLARE das int;
SELECT dasaxeleba.id INTO das FROM dasaxeleba WHERE dasaxeleba.barcode = NEW.barcode;
INSERT INTO sawyobi(das_id,raodenoba,tvitgirebuleba,gasayidi1,gasayidi2) 
VALUES(das,new.raodenoba,new.fasi,new.gasayidi1,new.gasayidi2);
END

如果您使用的是oracle,那么您可以使用以下内容:

       merge into sawyobi tgt
        using (select id
                 from dasaxeleba
                where barcode = NEW.barcode) src on (tgt.das_id = src.id)
 when matched then update set
              raodenoba = new.raodenoba,
              tvitgirebuleba = new.fasi,
              gasayidi1 = new.gasayidi1,
              gasayidi2 = new.gasayidi2
     when not matched then insert
              (das_id,
               raodenoba,
               tvitgirebuleba,
               gasayidi1,
               gasayidi2)
       values (src.id,
               new.raodenoba,
               new.fasi,
               ew.gasayidi1,
               new.gasayidi2)

不太清楚你的“新”价值观来自哪里。。。但是我希望你能明白你的问题不清楚。请提供示例数据、所需结果和适当的数据库标记。请提高问题的质量。我个人不明白你的问题是什么。你使用的是哪种DBMS产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。在Postgres中,您可以使用
insert。。关于冲突…
。有关其他可能的解决方案,请参阅