Возможно ли создать таблицу в MSSQL без столбцов?Создать таблицу, если она не существует без столбцов
Я спрашиваю об этом, потому что мне нужно будет проверить каждый столбец, если он уже существует или нет.
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tags]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].Tags(
[Id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Tags] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
Выполнение может быть нарушено путем создания идентификатора столбца, если таблица и столбец уже существуют.
Это было бы идеально:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tags]') AND type in (N'U'))
CREATE TABLE [dbo].Tags
GO
if NOT EXISTS (select column_name from INFORMATION_SCHEMA.columns where table_name = 'Tags' and column_name = 'Id')
alter table MyTable add MyColumn int IDENTITY(1,1) NOT NULL
GO
-- add new primary key constraint on new column
ALTER TABLE dbo.Tags
ADD CONSTRAINT PK_Tags
PRIMARY KEY CLUSTERED ([Id] ASC)
GO
Я не могу найти пример на второй части кода. Но я могу представить, что таблица не может быть создана с 0 столбцами.
Любые предложения?
[Редактировать] Еще один контекст. Некоторые таблицы существуют, а некоторые нет. Некоторые столбцы существуют, а некоторые нет. Я хочу создать скрипт, который может быть выполнен в любое время без нарушения или возникновения ошибки. Msg, как и таблица/столбец, уже существует.
не писать код, создающий таблицы на лету? – StevieG
Вопрос не очень хорошо написан. Должно быть больше деталей. Вы ищете таблицу без столбца или создать столбец таблицы, если столбец уже не существует? – SriniV
Невозможно, к сожалению. Существует ряд мест, где язык SQL не соответствует тому, что вы можете ожидать от действительно установленного языка (т. Е. Пустые множества интересны, но SQL не разрешает таблицы или ключи с пустым набором столбцов) –