0

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

alter table audit add new_key nvarchar(100) null

在尝试将其添加到同一 SQL 语句中之前,是否可以对其进行更改以检查该列是否存在?我知道你可以在 SQL Server 中很容易地做到这一点,但是 SQL Server CE 呢?

4

2 回答 2

1

如果您正在寻找可以使用 SQL Server 执行的操作:IF NOT EXISTS (...不幸的是,这对于 SQL Server Compact 是不可能IF的(不支持T-SQL )。请参阅SQL 参考 (SQL Server Compact)

基于此线程,您可以执行以下操作:

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

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

另请注意,SQL Server Compact 根本不支持批处理查询。因此,您无法检查该列是否存在并在需要时在同一 SQL 语句中添加该列。

或者,如果您正在寻找可以与 VB.NET 或 C# 一起使用的片段,请查看这个 SO 问题:如何使用 C# 确定 SQL Server CE 表中是否存在列?

于 2013-09-30T23:15:16.563 回答
-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
于 2013-09-30T22:45:57.403 回答