如果我在SQL Server CE中运行以下SQL,
alter table audit add new_key nvarchar(100) null
在尝试将列添加到同一SQL语句之前,是否可以更改该列以检查该列是否存在?我知道你可以在SQL Server中轻松地做到这一点,但SQL Server CE?
答案 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