Mysql触发器在重复键

时间:2017-10-18 09:31:57

标签: mysql

我尝试将数据导入到新表中,但结果显示两个不同列中的某些值是重复的,但似乎无法正常工作。这就是我的触发器:

DELIMITER //

CREATE TRIGGER insert_specificationattributeoption_child AFTER INSERT ON import_specificationattributeoption FOR EACH ROW
BEGIN
    INSERT INTO t_virtuemart_customs (virtuemart_custom_id, custom_parent_id, custom_title, show_title, field_type, custom_params, created_on, created_by, ordering, modified_on, modified_by)
    VALUES (NEW.option_id, NEW.specification_attribute_id, NEW.option_name, lower(NEW.option_name), 'S', 0, current_time(), 633, NEW.display_order, current_time(), 633)
    ON DUPLICATE KEY UPDATE NEW.option_id = NEW.option_id + 5000;
END //

使用触发器我没有收到重复的密钥错误,但我没有看到任何密钥超过5000.我在那里做错了什么?找到"发现"会更好吗?最高的ID并将新的ID添加到它?

编辑:基本上我想要做的是,如果我插入已存在的主键,请更改我想要插入的值。

1 个答案:

答案 0 :(得分:0)

我不清楚你要做什么。触发器必须检测重复键,因为没有显示重复错误,但UPDATE NEW.option_id = NEW.option_id + 5000对表没有影响。如果你想修改表格,那么语法将是UPDATE option_id = NEW.option_id + 5000 -note这也将下一个auto_increment值修改为NEW.option_id + 5000 + 1.