1

我不知道做错了什么,但我的约束条款不起作用

ALTER TABLE Employee 
ADD CONSTRAINT CheckSalary CHECK (Salary > 0);
//entitesin my table
EMPID   
EMPNAME
EMPDOB  
EMPRGENDER  
EMPCONTACT  
EMPADDRESS  
EMPSSN  
EMPSTATUS   
EMPLOYMENTID    
EMPEMAIL    
SALARY

任何帮助,将不胜感激

4

2 回答 2

2

只有在从 ADO 执行时,Access DDL 才支持检查约束。

这是一个立即窗口示例...

strSql = "ALTER TABLE Employee " & vbCrLf & _
"ADD CONSTRAINT CheckSalary CHECK (Salary > 0);"
? strSql
ALTER TABLE Employee 
ADD CONSTRAINT CheckSalary CHECK (Salary > 0);
' CurrentDb is a DAO object, so this will throw
' error 3289, "Syntax error in CONSTRAINT clause."
CurrentDb.Execute strSql
' CurrentProject.Connection is an ADO object,
' so this works ...
CurrentProject.Connection.Execute strSql

请注意,如果您尝试从查询设计器执​​行该语句,它也会失败,因为查询设计器使用 DAO。

因此,CHECK如果需要,可以设置约束,但设置验证规则Salary可能更容易。无论哪种方式,您可能还希望从Salary.

于 2013-09-06T19:27:45.870 回答
0

MS-Acess 不支持CHECK约束,而是使用所谓的“验证规则”。

有关详细信息,请参阅MSDN

于 2013-09-06T19:24:10.387 回答