2015-12-16 5 views
0

Я проверяю свою базу данных SQL, чтобы увидеть, существует ли столбец, если он не создан, но я хотел вставить строку в этот столбец, но только если столбец не существует.
В противном случае я обрабатываю эту информацию в своем коде на C#.
До сих пор у меня есть этот код:SQL -Создать таблицу, если она не существует, и вставить значение

string query = "IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tabela' AND COLUMN_NAME = 'coluna') ALTER TABLE tabela ADD coluna varchar(50)" ; 
SqlCommand command = new SqlCommand(query, con); 
command.ExecuteNonQuery(); 

Как я должен делать?

+0

Что происходит, когда вы запускаете этот код? – Steve

+0

Он работает нормально! Мне просто нужно было добавить обновление в базу данных, вставив строку только что созданного столбца. –

+0

INSERT INTO table_name ЦЕННОСТИ (значение); Это скорее вопрос SQL, чем C#. Вам не нужно было предоставлять код C#. – Alex

ответ

-1

Вы можете написать trigger для каждого элемента SELECT из объекта базы данных. В этом вы можете сначала проверить, существует ли столбец, и затем вы можете сделать это нужным. Это можно достичь, если использовать triggres SQL (или даже хранимые процедуры ), C# не имеет ничего общего с ним :)

Для получения более подробной информации о триггерах, вы можете проверить this из

+0

down-voters позаботились прокомментировать – IamRuku

+0

Я не спустил вниз, но я не думаю, что в SQL Server есть такая вещь, как SELECT TRIGGER. –

0

Изменить запрос для выполнения блок-после IF (psuedocode):

IF NOT EXISTS(...) 
    BEGIN 
    ALTER TABLE MyTable ...; 
    INSERT INTO MyTable ...; 
    END 

обязательно поставить точку с запятой в конце команды ALTER и INSERT, так как вы отправляете их в одной команде из приложения, так что SQL Server будет видеть их как все на одной линии.

Смежные вопросы