Есть ли лучшие практики для ВСТАВКИ В?

#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. почему? почему это важно, чтобы это работало без слишком