日期:2014-05-16  浏览次数:20870 次

mysql触发器里更改表自增值的问题
DELIMITER //
CREATE TRIGGER getauto BEFORE INSERT ON autotest FOR EACH ROW
BEGIN
DECLARE i INT;
DECLARE cou INT;
DECLARE num INT;
SET i=0;
SELECT id INTO cou FROM autotest;
WHILE i<=cou DO
SET i=i + 1;
SELECT id INTO num FROM autotest WHERE id=i;
IF num<>i THEN
  ALTER TABLE autotest AUTO_INCREMENT=i;
  SET cou=0;
  END IF;  
END WHILE;
IF num=i THEN
  ALTER TABLE autotest AUTO_INCREMENT=i+1;
  END IF;  
END//
在运行时
ALTER TABLE autotest AUTO_INCREMENT=i;
这里出了问题 如果把i换成数值就可以,问什么用变量就不行了
各位大侠救救小弟!!!!!


------解决方案--------------------
TRIGGER不能针对目表操作!!!
------解决方案--------------------
MYSQL TRIGGER不能对本表操作
------解决方案--------------------
理论上主键是不应该再变动的。

如果你实现要在表中设置这个需要根据记录变化的ID,则建议再添加一个字段来放这个ID,然后定期使用update 来更新这个字段。