SQL Server CE中不存在如何检查列

时间:2013-09-30 22:31:05

标签: sql sql-server-ce

如果我在SQL Server CE中运行以下SQL,

alter table audit add new_key nvarchar(100) null

在尝试将列添加到同一SQL语句之前,是否可以更改该列以检查该列是否存在?我知道你可以在SQL Server中轻松地做到这一点,但SQL Server CE?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找类似于SQL服务器的内容:IF NOT EXISTS (...,遗憾的是,SQL Server Compact(T-SQL IF可能 不支持)。见SQL Reference (SQL Server Compact)

基于this thread,您可以执行以下操作:

select * from Information_SCHEMA.columns
where Table_name='audit' and column_name='new_key'
  

(即没有结果=不存在)。

另请注意,SQL Server Compact中根本不支持批量查询。因此,您无法检查列是否存在,并在相同的SQL语句中添加列(如果需要)

或者,如果您正在寻找可以与VB.NET或C#一起使用的代码段,请查看此SO问题:How can I determine whether a column exists in a SQL Server CE table with C#?

答案 1 :(得分:-2)

最简单的方法是查询information_schema并查看列是否在那里。

IF NOT EXISTS(
    SELECT * FROM information_schema.columns 
    WHERE Table_Schema = 'dbo'
    AND Table_Name = 'audit'
    AND Column_Name = 'new_key'
) BEGIN
  alter table audit add new_key nvarchar(100) null
END