2017-05-30 130 views
0

当我插入一个新行时,自动增量ID将被保存为1,2,3 .. 我需要使用触发器对其进行自定义,以便将其保存像20171,20172,20173 ..MySQL-Update插入自动增量主键到自定义值

+0

似乎很奇怪,但确定。你想要在该系列中的第10个价值是什么,201710? –

+0

感谢您的评论。 可以成为2017257 :) –

+0

我想让它变得像2017 + the_old_id –

回答

1

此触发器会执行此操作。

CREATE DEFINER=`root`@`%` TRIGGER `test_before_insert` BEFORE INSERT ON `test` FOR EACH ROW BEGIN 

SET NEW.id = (
    SELECT CONCAT(YEAR(CURDATE()),IFNULL(MAX(CAST(ids.id AS UNSIGNED))+1,1)) 
    FROM (
     SELECT RIGHT(t.id,LENGTH(t.id)-4) AS id 
     FROM test t 
     WHERE LEFT(t.id,4) = YEAR(CURDATE()) 
    ) ids 
); 

END 

但是有很多理由你不愿意。随着插入行,这将会成倍地增加,并且不提供可行的排序等。

+0

非常感谢,我会在到达办公室时尽快进行测试 –