在MySQL中,我們可以使用INSERT語句來將數(shù)據(jù)插入到表中。INSERT語句可以在表中添加新的行或者替換掉表中已經(jīng)存在的行。
在執(zhí)行INSERT語句時(shí),我們可以在語句的末尾使用ON DUPLICATE KEY UPDATE語句來控制行為。這個(gè)語句的作用就是在遇到重復(fù)的鍵(即PRIMARY KEY或UNIQUE索引)的時(shí)候,更新該行的值,而不是插入一行新的數(shù)據(jù)。
INSERT INTO table_name (col1, col2, col3) VALUES ('value1', 'value2', 'value3') ON DUPLICATE KEY UPDATE col2='new_value'
上述語句表示:將'value1'、'value2'、'value3'插入到table_name表的col1、col2、col3字段中。如果在執(zhí)行INSERT時(shí)發(fā)現(xiàn)滿足表中已有的PRIMARY KEY或UNIQUE索引條件,則執(zhí)行UPDATE操作,將col2的值更新為'new_value'。
如果不加ON DUPLICATE KEY UPDATE語句,則在執(zhí)行INSERT時(shí),如果出現(xiàn)重復(fù)的鍵,則會報(bào)錯(cuò),提示插入數(shù)據(jù)失敗。
ERROR 1062 (23000): Duplicate entry 'value1' for key 'PRIMARY'
總之,在使用INSERT時(shí),我們需要根據(jù)具體情況判斷是否需要在語句后面加上ON DUPLICATE KEY UPDATE,以實(shí)現(xiàn)更精細(xì)化的操作。