如果插入成功则

问题描述 投票:0回答:1

所以,我试图检查,如果一个表条目等于另一个表条目,如果它是更新的表,如果它不是把一个新的条目在

我在if exists处得到错误信息。我试着移动开头和结尾,但没有用。

BEGIN    
    IF EXISTS(
        SELECT  *    
        FROM x, y    
        WHERE x.ID = y.ID
)
BEGIN
    INSERT INTO x(ID, sID,cID, n, a)
    VALUES(y.ID, y.sID, y.cID, NULL, NULL)
END
BEGIN
    ELSE
        UPDATE x 
        SET x.sID= y.sID, x.cID= y.cID
    END  
END
;
mysql sql if-statement insert sql-insert
1个回答
1
投票

我想你想要的是 insert ... on duplicate key 语法。

insert into x(id, sid, cid, n, a)
select y.id, y.sid, y.cid, null, null
from y
on duplicate key update x.sid = y.sid, x.cid = y.cid

这个查询试图插入所有现有的记录在 y 表中 x. 当一个已经存在的 id 满足,查询转到 on duplicate key 条款,以及 updates sidcid 上的现有行。

为了达到这个目的,我们需要在以下数据上设置一个唯一的(或主键)约束 x(id).

© www.soinside.com 2019 - 2024. All rights reserved.