Я копирую подмножество некоторых данных, так что в будущем копия будет изменяться независимо.
Один из моих операторов SQL выглядит примерно так (я изменил имена таблиц и столбцов):
INSERT Product(
ProductRangeID,
Name, Weight, Price, Color, And, So, On
)
SELECT
@newrangeid AS ProductRangeID,
Name, Weight, Price, Color, And, So, On
FROM Product
WHERE ProductRangeID = @oldrangeid and Color = 'Blue'
То есть мы запускаем новую линейку продуктов, которая изначально состоит из всех синих элементов в некотором указанном текущем диапазоне, под новыми SKU. В будущем мы можем менять версии продуктов «синего диапазона» независимо от старых.
Я довольно новичок в SQL: что-нибудь умное я должен сделать, чтобы избежать перечисления всех этих столбцов, или, по крайней мере, избегать перечисления их дважды? Я могу жить с текущим кодом, но я бы предпочел не возвращаться и не изменять его, если в Product добавляются новые столбцы. В его нынешнем виде он просто молча не сможет скопировать новый столбец, если я забуду это сделать, что должно появиться в тестировании, но не очень.
Я копирую каждый столбец, кроме ProductRangeID (который я изменяю), ProductID (увеличивающий первичный ключ) и двух столбцов DateCreated и timestamp (которые принимают автоматически созданные значения для новой строки).
Кстати, я подозреваю, что у меня должна быть отдельная таблица соединения между ProductID и ProductRangeID. Я не определил таблицы.
Это хранимая процедура T-SQL в SQL Server 2008, если это имеет какое-либо значение.