MySQL-Update将自动增量主键插入自定义值

时间:2017-05-30 23:40:52

标签: mysql database triggers

当我插入新行时,将保存自动增量ID,如1,2,3 .. 我需要使用触发器对其进行自定义,以便将其保存为20171,20172,20173 ..

1 个答案:

答案 0 :(得分: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

但是你有很多理由不想这样做。插入行时,这将成倍地增加成本,并且不提供可行的排序等。