我检查我的SQL数据库,看看是否存在列,如果没有创建,但我想在该列中插入一个字符串,但前提是该列不存在。
否则我在C#代码中处理这些信息
到目前为止,我有这段代码:
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 :(得分:0)
更改查询以在IF(伪代码)之后执行一个块:
IF NOT EXISTS(...)
BEGIN
ALTER TABLE MyTable ...;
INSERT INTO MyTable ...;
END
确保在ALTER和INSERT命令的末尾加上分号,因为您是从应用程序的单个命令中发送这些分号,因此SQL Server会将它们视为全部在一行上。
答案 1 :(得分:-1)
您可以从数据库对象为每个SELECT编写trigger
。在那里你可以先检查列是否存在,然后你可以做到这一点。这可以通过使用SQL triggres(甚至存储过程)完全实现
),C#与它无关:)
有关触发器的详细信息,您可以查看this