MySQL更新将插入的主键自动递增为自定义值
插入新行时,将保存一个自动增量ID,如1,2,3。。MySQL更新将插入的主键自动递增为自定义值,mysql,database,triggers,Mysql,Database,Triggers,插入新行时,将保存一个自动增量ID,如1,2,3。。 我需要使用触发器对其进行自定义,这样它将像201712017220173一样保存。此触发器将执行此操作 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
我需要使用触发器对其进行自定义,这样它将像201712017220173一样保存。此触发器将执行此操作
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
但是有很多理由你不想这么做。当插入行时,这将以指数形式增加成本,并且无法提供可行的排序等。似乎有些奇怪,但还行。您希望该系列的第十个价值是什么,201710?谢谢您的评论。2017257没关系:)我想让它像2017年一样+旧的伊多克,明白了。现在你可能有理由需要它了。我只是想指出,除非使用字符,否则索引的顺序不会按年份分组。你可以这么做。也许我没弄明白,但我相信用扳机就可以做到,对吧?非常感谢,我到办公室后会尽快测试