在 Access 表中,我有一列将“Required”属性设置为“True”。我需要一个将其更改为“False”的查询。我尝试了以下但没有成功:
ALTER TABLE [MyTbl] ALTER COLUMN [MyCol] VARCHAR(30) NULL;
最佳答案
Access (Jet/ACE) DDL 将允许您更改字段的 Required
属性从 False 到 True。以下是 Access Immediate 窗口中的示例:
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required
False
CurrentDb.Execute "ALTER TABLE [MyTbl] ALTER COLUMN [MyCol] VARCHAR(30) NOT NULL;"
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required
True
然而,你想要相反的---改变
Required
从真到假。 Access DDL 不会这样做。在此示例中,应用了请求的字段大小,但 Required
属性不变。并且 Access 不会抛出错误:CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required = True
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required
True
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Size
10
CurrentDb.Execute "ALTER TABLE [MyTbl] ALTER COLUMN [MyCol] VARCHAR(30) NULL;"
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required
True
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Size
30
如果您在 DDL 语句中排除了 Null 的任何提及,
Required
仍然不变:CurrentDb.Execute "ALTER TABLE [MyTbl] ALTER COLUMN [MyCol] VARCHAR(30);"
? CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required
True
作为替代方案,您可以混合使用 Access DDL 和 DML,如@tschaible 和@hawbsl 所示。然而,这种方法对我来说似乎太过分了。我更喜欢@Caltor 建议的方法。如果这对你来说实用,它甚至可能像这样简单......
CurrentDb.TableDefs("MyTbl").Fields("MyCol").Required = False
关于sql - 如何使用 DDL 更改 Access 中列的 "Required"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205649/