我遇到了意想不到的问题。我正在制作一个脚本来更新SQL CE数据库上的模式。这不会运行:
if not exists
(
Select column_name from information_schema.columns
where column_name = 'TempTestField'
and table_name = 'Inventory_Master_File'
)
Alter table Inventory_Master_File
add TempTestField nvarchar(10) null
我认为这是因为我使用的是SQL CE不支持的东西。有人知道怎么做吗?我已经尝试重新安排脚本,但无法正常工作。我试过“改变表......不存在......”。
请注意,“select”部分运行正常,还有“alter”部分。问题是“如果不存在”。我知道有一些关于使用SQL CE的问题的其他帖子,但我找不到这个特定问题的答案。
干杯
标记
我花了一个多小时寻找解决方案。我发现许多帖子都在寻求类似问题的帮助,但我仍然不知道如何修复它。我真的不想在C#代码中这样做。我需要在SQL脚本中执行此操作。我不敢相信这个基本原因导致了这么多困难:(
答案 0 :(得分:10)
似乎SQL CE根本不支持任何程序扩展;只有20世纪70年代的DDL和DML。
您必须将过程逻辑放在应用程序中(C#或其他),或者转到带有过程扩展的可嵌入数据库,如MySQL。
答案 1 :(得分:1)
我根本不习惯CE。 但是在我不会有任何过程扩展的情况下,我只需触发ALTER TABLE语句。 如果该字段已存在,则会出现异常。 因为你必须尝试...以任何一种方式捕获它,你只需要在你的短语中单独处理这个异常......
只是我的两分钱。
答案 2 :(得分:0)
我承认不熟悉SQL Server CE的特殊限制,但是,如果它支持动态SQL,那么这应该可行:
Declare @sql as nvarchar(max);
Set @sql = '';
Select @sql = 'Alter table Inventory_Master_File
add TempTestField nvarchar(10) null '
from information_schema.columns
where column_name = 'TempTestField'
and table_name = 'Inventory_Master_File'
EXEC(@sql);