У меня есть временная таблица с именем #ColumnList, которая содержит список имен столбцов. Мне нужно перебрать каждую строку в этой таблице и посмотреть, является ли столбец первичным ключом. Если это ключ, то мне нужно добавить имя этого столбца в столбец с именем PRIMARYKEYCOLUMN.
Это то, что у меня есть, но оно не работает. Выдает ошибку
Невозможно вставить значение NULL в столбец 'DataType', таблица 'tempdb.dbo. # ColumnList __________________ 0000000B0D8C'; столбец не допускает пустых значений. Вставить не удается.
ALTER TABLE #ColumnList
ADD PRIMARYKEYCOLUMN VARCHAR(50);
INSERT INTO #ColumnList ([PRIMARYKEYCOLUMN])
(SELECT DISTINCT KU.column_name as PRIMARYKEYCOLUMN
FROM
sys.columns c
JOIN sys.types t ON t.user_type_id = c.user_type_id
AND t.system_type_id = c.system_type_id
JOIN sys.tables tab ON c.object_id = tab.object_id
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON TC.TABLE_NAME = tab.name
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND
TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME AND
KU.table_name='myTableName'
JOIN #ColumnList cl ON cl.ColumnName = KU.COLUMN_NAME)
Выше подзапрос (без JOIN #ColumnList cl ON cl.ColumnName = KU.COLUMN_NAME) работает нормально и возвращает результаты ниже. Однако вставка не работает.
[PRIMARYKEYCOLUMN]
Column1
Column2
Column3
Мне нужно, чтобы те же столбцы, которые указаны выше, были вставлены во временную таблицу, где существуют те же имена столбцов.