无需创建另一个表,并且max()会因表的auto_increment值而出现问题,请执行以下操作:
CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROWBEGIN DECLARE next_id INT; SET next_id = (SELECt AUTO_INCREMENT FROM information_schema.TABLES WHERe TABLE_SCHEMA=DATAbase() AND TABLE_NAME='tbl'); SET NEW.field=next_id;END
我声明next_id变量是因为通常它将以其他方式使用(*),但是您可以直接使用new.field =(select …)
(*) To auto-name an image:SET NEW.field = CONCAt('image_', next_id, '.gif');(*) To create a hash:SET NEW.field = CONCAt( MD5( next_id ) , MD5( FLOOR( RAND( ) *10000000 ) ) );


