在mysql innodb表中重用缺少的id(auto_increment)

时间:2014-09-17 11:41:42

标签: mysql sql magento

我在magento中有一个表,其中将删除许多记录(大约50k行)。 我需要尽可能少地创建id,因为它被用作记录的引用,所以我想重用已删除的id。 你能告诉我如何在多用户环境中可靠地重用id吗?' 如果有任何ID需要重用,我试图设置触发器设置id:

DELIMITER $$ 在插入product_BINS之前创建触发器product 对于每一行 开始     DECLARE reused_id整数;
    DECLARE semaphore_id整数;

SET @semaphore_id = (SELECT id FROM semaphore WHERE id = 1 FOR UPDATE);
SET @reused_id = (SELECT MIN(id) FROM product_all_ids LEFT JOIN product ON id = product_id WHERE product_id IS NULL);

IF (NOT ISNULL(@reused_id)) THEN
    SET NEW.product_id = @reused_id;
END IF;    

END

我使用像信号量这样的表信号量来避免多用户系统中的问题。我试过测试它,到目前为止还没有发现任何问题。 是否有意义?这是一个可行的解决方案吗?

0 个答案:

没有答案