更新列IF存在,否则插入

时间:2016-03-01 13:59:53

标签: mysql

我知道ON DUPLICATE USE KEY条款。但我不能使用它,因为我想在非唯一列上updateinsert

我有table1table2。我想在table1上创建一个触发器。

伪代码:

IF id_code for corresponding id_name from table1 is present in table2
then update record in table 2
else record in table2.

对于Ex。

table1 has column1 id_code, column2 id_name
table2 has column1 id_code, column2 status

IF id_code for corresponding id_name from table1 is present in table2
UPDATE status column in table2.
ELSE insert id-code in table2

1 个答案:

答案 0 :(得分:0)

最好的方法可能是使用条件语句,因为正如您所说的那样,您正在检查非唯一值,因此无法使用ON DUPLICATE KEY:

IF EXISTS (SELECT id_code FROM table2 WHERE id_code = 'code from table1') THEN
    UPDATE table2 SET status = 'new status' WHERE id_code = 'code from table1';
ELSE
    INSERT INTO table2 (id_code, status) VALUES ('code from table1', 'new status');
END IF;

这里唯一需要注意的是控制结构仅在存储过程中有效,因此您需要将其放在存储过程或触发器中。