约束子句中的语法错误

时间:2013-09-06 19:14:34

标签: sql ms-access

我不知道出了什么问题但是我的约束条款没有用

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

任何帮助将不胜感激

2 个答案:

答案 0 :(得分: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中的Null。

答案 1 :(得分:0)

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

有关详细信息,请参阅MSDN