Если вы хотите клонировать строку с одним оператором SQL и не можете или не хотите перечислять все значения, но есть первичный ключ, который вы можете использовать:
INSERT INTO Products
SELECT *
FROM Products
WHERE product_id = 1
UNION ALL
SELECT *
FROM Products
WHERE product_id = 1
ON DUPLICATE KEY UPDATE product_id=(SELECT MAX(product_id)+1 FROM Products);
Попытка вставить две копии строки в базу данных, и когда вставка первой строки завершается неудачно из-за дублирования product_id, она использует ON DUPLICATE KEY
, чтобы обновить существующую строку в таблице до следующего доступного product_id, что оставляет исходный product_id доступен, когда вставлена вторая строка.