检查 ms 访问中的约束
Posted
技术标签:
【中文标题】检查 ms 访问中的约束【英文标题】:Check constraint in ms access 【发布时间】:2020-10-15 09:30:45 【问题描述】:我正在尝试在 ms 访问(SQL 视图)中执行此语句,但这在检查约束和 numeric(3,2) 上显示错误。当我从 numeric 中删除 (3,2) 并删除最后 2 个约束时然后检查 这执行成功...但我想在表中添加最后一个检查约束..当我再次添加时,这会显示一个错误..
CREATE TABLE COMPUTER(
SerialNumber Int NOT NULL,
Make Char(12) NOT NULL,
Model Char(24) NOT NULL,
ProcessorType Char(24) NULL,
ProcessorSpeed Numeric(3,2) NOT NULL,
MainMemory Char(15) NOT NULL,
DiskSize Char(15) NOT NULL,
CONSTRAINT COMPUTER_PK PRIMARY KEY(SerialNumber),
CONSTRAINT MAKE_CHECK CHECK(Make IN ('Dell', 'Gateway', 'HP', 'Other')),
CONSTRAINT SPEED_CHECK CHECK(ProcessorSpeed BETWEEN 1.0 AND 4.0)
);
我该怎么办?我有 MS ACCESS 2007
【问题讨论】:
我认为 MS Access 在 MS Access 2013 中引入了约束。 @GordonLinoff 我也在 MS Access 2013 上试过,但同样的错误。 【参考方案1】:尝试使用 VBA/ADO 运行 CREATE TABLE,即在 Visual Basic 编辑器中:
Sub CreateMyTable()
Dim cnn As New ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute ("CREATE TABLE ... plus the rest of your create here")
Set cnn = Nothing
End Sub
您可以使用 Access SQL 视图定义的内容与您可以通过 VBA/ADO 定义的内容之间存在(遗憾的是)不一致。在这种情况下,Numeric(3, 2)
在 Access SQL 视图中不起作用,我相信并且我认为约束也不会起作用。我假设您已将数据库选项设置为与 SQL-92 ANSI 兼容。
【讨论】:
以上是关于检查 ms 访问中的约束的主要内容,如果未能解决你的问题,请参考以下文章
使用 UCanAccess 创建表后,ms 访问未强制执行非空约束
是否可以通过 VBA 访问 MS Word 必须执行其语法检查的语法信息?