Триггер 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