#sql-server #tsql
Вопрос:
Я создал таблицу из другой таблицы с INTO. Теперь я хочу вставить в него данные. Рекомендуется ли называть все столбцы в предложении INSERT?
TRUNCATE TABLE [Purchasing].[PurchaseOrderDetail_2]
INSERT INTO [Purchasing].[PurchaseOrderDetail_2]
SELECT
b.Name,
b.ProductNumber,
a.[DueDate],
a.[OrderQty],
a.[ProductID],
a.[UnitPrice],
a.[LineTotal],
a.[ReceivedQty],
a.[RejectedQty],
a.[StockedQty],
a.[ModifiedDate]
FROM
[AdventureWorks2019].[Purchasing].[PurchaseOrderDetail] AS a
INNER JOIN
Production.Product AS b ON a.ProductID = b.ProductID
SELECT *
FROM [Purchasing].[PurchaseOrderDetail_2]
Комментарии:
1.
Is it best practices to name all the columns in the INSERT clause?
: Добрый день, В моем луке это обязательно! так что ответ-ДА2. Да — определенно! Вы всегда должны указывать все столбцы в своем
INSERT
заявлении, чтобы избежать неприятных сюрпризов, когда порядок столбцов в вашей таблице может внезапно измениться….3. Да! Почему было бы хорошей практикой не называть их? sqlblog.org/2009/10/10/…
Ответ №1:
Да, это Правда. но вы должны написать имена своих столбцов в команде insert, например:
ВСТАВЬТЕ В [Покупка].[PurchaseOrderDetail_2] (x, y , z,…) ВЫБЕРИТЕ b.Name, б.Номер продукта, а.[Дата заказа], а.[Номер заказа], а.[ProductID], а.[Цена единицы], а.[Общее количество строк], а.[Полученное количество], а.[ОтклоненНое количество], а.[Количество запасов], а.[Измененная дата] ИЗ [AdventureWorks2019].[Покупка].[PurchaseOrderDetail] КАК ВНУТРЕННЕЕ СОВМЕСТНОЕ производство.Продукт КАК b НА a.ProductID = b.ProductID
Комментарии:
1. почему? почему это важно, чтобы это работало без слишком