Я надеюсь составлять временную таблицу, которая используется в качестве промежуточной таблицы при компиляции отчета.
Некоторое время фона я портирую приложение VB 6 на .NET
Для составления таблицы, я могу использовать...
SELECT TOP 0 * INTO #temp_copy FROM temp;
Это создает пустую копию временного файла, Но он не создает первичный ключ
Существует ли способ составить временную таблицу плюс ограничения?
Я должен создать ограничения впоследствии?
Или действительно ли я более обеспечен, просто создание использования таблицы составляет таблицу, я не хотел делать это, потому что существует 45 столбцов в таблице, и это заполнило бы процедуру большим количеством ненужного хлама.
Таблица требуется, потому что много людей может генерировать отчеты одновременно, таким образом, я не могу использовать единственную посредническую таблицу
Тебе действительно нужен Основной ключ? Если вы вздрагиваете и выбираете только те данные, которые нужны для отчета, вам все равно не придется посещать каждую строку временной таблицы?
По умолчанию SELECT INTO не переносит ограничений (PK, FK, Unique), значений по умолчанию, проверок и т. Д. Это связано с тем, что SELECT INTO может фактически извлекать данные из множества таблиц одновременно (через соединения в предложении FROM). Поскольку SELECT INTO создает новую таблицу из указанных вами таблиц, SQL действительно не может определить, какие ограничения вы хотите сохранить, а какие нет.
Вы можете написать процедуру / сценарий для автоматического создания ограничения, но это, вероятно, слишком много усилий для минимальной выгоды.
Вы должны сделать то или иное:
Я бы также сделал это вместо TOP 0
SELECT * INTO #temp_copy FROM temp WHERE 1 = 0;