sql - 如何使用 DDL 更改 Access 中列的 "Required"属性?

标签 sql ms-access

在 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/

相关文章:

http - 通过 HTTP Post 发送 XML 时编码 "<"和 ">"

ms-access - 从 Access DB 中提取 OLE 对象(word 文档)

sql - 删除表中的一系列记录

sql - PostgreSQL 函数 () 中的错误 "relation does not exist"

mysql - 如何使用索引在两列之间进行查询过滤

vba - dd/mm 自动更改为 mm/dd

ms-access - 检查数据透视查询中是否存在列

http - 2017 年 Microsoft Access 中的安全 http 调用......有这样的事情吗

python - python 中的 SQL COALESCE() 方法

mysql - 用户文件数据库设计