Sql 约束子句中的语法错误

Sql 约束子句中的语法错误,sql,ms-access,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 任何帮助都将不胜感

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

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

任何帮助都将不胜感激

MS Acess不支持
检查
约束,而是使用它所称的“验证规则”


有关更多信息,请参阅。

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

下面是一个即时窗口示例

strSql=“ALTER TABLE Employee”&vbCrLf&_
“添加约束检查薪资检查(薪资>0);”
? strSql
更改表格雇员
添加约束检查薪资检查(薪资>0);
'CurrentDb是一个DAO对象,因此将抛出
'error 3289,“CONSTRAINT子句中的语法错误。”
CurrentDb.executestrsql
'CurrentProject.Connection是一个ADO对象,
“所以这是可行的。。。
CurrentProject.Connection.Execute strSql
注意:如果您试图从查询设计器执行该语句,它也会失败,因为查询设计器使用DAO


因此,如果需要,您可以使用
检查
约束,但为
薪资
设置验证规则可能更容易。无论哪种方式,您都可能希望禁止工资中的空值

“不工作”没有帮助。错误是什么?你得到了什么错误?这个表已经有记录了吗?如果是,,您确认所有现有记录都有一个salary值吗?…该表实际上有一个名为salary的列吗?没有,我没有在表中放置记录它的空白@Declan_K错误是access中的give me是syntax error in constraintclauseEMPID EMPNAME EMPDOB empGender EMPCONTACT EMPADDRESS EMPSSN EMPSTATUS EMPLOYMENTID EMPEMAIL SALARY这些是我表格中的实体Oh好的,所以我只需将验证规则设置为SALARY>0您可以从即时窗口(Ctrl+g)执行此操作,如我的回答所示。也可以编写一个VBA过程来执行同样的操作,然后运行该过程。或者从Access应用程序会话外部,您可以编写VBScript,用ADO连接到Access db文件,并从那里执行
ALTER TABLE
语句。