我正在使用MS Access 2010,并且尝试使用SQL创建表。我想添加一些检查约束,但遇到一些麻烦:
CREATE TABLE Test ( tester Text CHECK (tester IN ('ABC', 'BCD', 'CDE')) );
我收到语法错误,
有什么建议?
谢谢!
编辑:对不起,如果我不清楚。我实际上想要检查的是他可以拥有的唯一值是“ ABC”,“ BCD”或“ CDE”。
EDIT2:我尝试了其他方法:
CREATE TABLE Test ( tester Text NOT NULL, CONSTRAINT m_pk PRIMARY KEY(tester), CONSTRAINT check_tester CHECK (DATALENGTH(tester) > 2) );
而且我也收到语法错误。检查Text值时,我真的不了解吗?我可能看不到这两个地方哪里有错。
从Jet 4开始,CHECK从ADO(但不是从DAO)执行的Access DDL支持约束。
CHECK
您可以执行一个DDL语句,该语句Test使用您的约束来创建表。您无需执行一个语句来创建表,而无需执行另一条语句来添加约束。
Test
CREATE TABLE Test ( tester TEXT(255), CONSTRAINT ABC_or_BCD_or_CDE CHECK ( tester IN ('ABC', 'BCD', 'CDE') ) );
我对它进行了格式化,以使其更易于检查。您可以使用此VBA执行以下语句:
strSql = "CREATE TABLE Test ( tester Text(255)," & vbCrLf & _ "CONSTRAINT ABC_or_BCD_or_CDE" & vbCrLf & _ "CHECK ( tester IN ('ABC', 'BCD', 'CDE')));" Debug.Print strSql CurrentProject.Connection.Execute strSql
笔记:
CurrentProject.Connection
.Execute
CurrentDb.Execute
TEXT
tester TEXT
tester TEXT(255)