Триггер SQL Server для копирования данных из столбцов вставленной строки в одну таблицу в строки другой таблицы

У меня есть веб-форма, которая принимает пользовательский ввод в различные поля и помещает их в таблицу в виде отдельных столбцов. Затем мне нужно взять эту строку данных и скопировать данные из столбцов в другую таблицу в виде строк. Столбцы в первой таблице связаны с идентификатором во второй таблице (идентификатор для других целей не связан с таблицами и является статическим набором).

У меня проблемы с тем, чтобы обернуть голову вокруг этого, поэтому я уверен, что мое описание выше не очень понятно. Вот упрощенный пример:

Таблица 1

street_address | city | state | zip  

СПУСКОВОЙ КРЮЧОК

Таблица 2

street_address | 1  
city | 2  
state| 3  
zip | 4  

Если один из столбцов в таблице 1 оставить пустым, он вообще не должен создавать строку в таблице 2.

Опять же, идентификаторы, которые используются в таблице 2, уже установлены (то есть каждый столбец из таблицы 1 будет соответствовать предварительно определенному идентификатору в таблице 2).

Любая помощь с этим была бы великолепна. Извините, если я не объяснил все это хорошо. Я проясню вопросы по мере их возникновения.

Спасибо.

1 ответ

Решение

Похоже, ваш триггер должен UNPIVOT от INSERTED стол в другой стол. Имейте в виду, что вам нужно будет отбросить все столбцы в списке выбора до длины самого длинного столбца. Вот SQL Fiddle

SELECT colName, value
FROM(
  SELECT 
     street_address
    ,CAST(city AS VARCHAR(100)) AS city
    ,CAST(state AS VARCHAR(100)) AS state
    ,CAST(zip AS VARCHAR(100)) AS zip
  FROM Table1
)AS p
UNPIVOT(
  value FOR colName IN(street_address, city, state, zip)
)AS unpvt
Другие вопросы по тегам