2016-03-01 3 views
-1

Я знаю о ON DUPLICATE USE KEY оговорки. Но я не могу использовать его, так как хочу update и insert на неуникальном столбце.Обновить колонку IF существует else insert

У меня есть table1 и table2. Я хочу создать триггер на 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 
+0

Пожалуйста, обратитесь к этому http://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists –

+0

* «Я хочу создать триггер» * - взгляните в некоторых примерах: http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html – axiac

+0

Создайте триггер, а затем используйте вставку ... при дублировании обновления ключа ... внутри него. – Shadow

ответ

0

Лучший способ, вероятно, будет использовать условный оператор, так как вы сказали, что вы проверяете для не уникальное значение, и, следовательно, не может использовать дублированием 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; 

Единственным предостережением здесь является что управляющие структуры действительны только в хранимых процедурах, поэтому вам нужно будет поместить это в хранимую процедуру или триггер.

+0

Я хочу создать триггер, а не SP, Могу ли я использовать выше код в триггере? – Priyanshu

+0

Да, вы также можете использовать его в триггере. – ElGavilan

Смежные вопросы