当我插入新行时,将保存自动增量ID,如1,2,3 .. 我需要使用触发器对其进行自定义,以便将其保存为20171,20172,20173 ..
答案 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
但是你有很多理由不想这样做。插入行时,这将成倍地增加成本,并且不提供可行的排序等。