我试图将数据导入到一个新表中,但发现来自两个不同列的一些值是重复的,但似乎不起作用。这就是我的触发器:
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添加到其中会更好吗?
编辑:基本上,我想做的是,如果我正在插入一个已经存在的主键,请更改我要插入的值。
我不清楚你想做什么。触发器必须检测重复的键,因为没有显示重复的错误,但UPDATE NEW.option_id=NEW.optia_id+5000对表没有影响。如果您想修改该表,那么语法将是UPDATE option_id=NEW.option_id+5000-请注意,这也将下一个auto_increment值修改为NEW.optia_id+5000+1。