Если вы используете MySQL 8.0 (или MariaDB 10.2 или выше), вы можете использовать рекурсивный запрос для этого. Это должно быть намного эффективнее, чем использование al oop.
insert into product_images (alt, url, `index`, product_id)
with recursive cte as (
select 0 i
union all select i + 1 from cte where i < 120
)
select
'productImage',
'image/products/producte.png',
x.n,
c.i
from cte c
cross join (select 1 n union all select 0 union all select 0 union all select 0) x
. Выражение рекурсивной общей таблицы генерирует числа от 0
до 120
. Затем мы можем cross join
это с фиксированным списком значений (1, 0, 0, 0)
, чтобы сгенерировать строки для insert
.
. Вы можете легко превратить это в процедуру:
delimiter $$
create procedure inserturl()
begin
insert into product_images (alt, url, `index`, product_id)
with recursive cte (
select 0 i
union all select i + 1 from cte where i < 120
)
select
'productImage',
'image/products/producte.png',
x.n,
c.i
from cte c
cross join (select 1 n union all select 0 union all select 0 union all select 0) x;
end
$$
delimiter ;