Leverage:
CREATE OR REPLACE VIEW generator_16
AS SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15;
CREATE OR REPLACE VIEW generator_256
AS SELECT ( ( hi.n << 4 ) | lo.n ) AS n
FROM generator_16 lo, generator_16 hi;
The above from Answer: https://stackoverflow.com/a/9751493
Now for your table
create table years
( year int primary key
);
insert years(year) select 1881+n
from generator_256
where n<150;
-- 150 rows
select min(year), max(year), count(*) from years;
-- 1881 2030 150
drop view if exists generator_256;
drop view if exists generator_16;
You now have a years
table, years 1881 to 2030
optionally,
delete from years where year > year(now());