C#使用DDL创建MS Access表时报CONSTRAINT子句语法错误求助
报错原因
你收到Syntax error in CONSTRAINT clause报错的核心原因是外键约束的语法不完整。Access的DDL规则要求,定义FOREIGN KEY时必须同时指定该外键关联的父表名称,以及父表中对应的关联字段,你当前的代码只声明了外键字段是Username,没有补充引用的目标表和字段,因此触发语法错误。
解决方案
方案1:保留外键约束
如果你的业务需要为Username字段关联用户表,假设你的用户表名称为UserInfo,且该表中主键为Username字段,将外键声明行修改为FOREIGN KEY(Username) REFERENCES UserInfo(Username)即可。
*注意:关联的父表必须已经在当前数据库中创建完成,且父表中被引用的字段必须是主键或带有唯一约束,否则外键会创建失败。
修改后的完整代码如下:
_SqlString = "CREATE TABLE QuestionStatID(" + "StatID VARCHAR(25) NOT NULL," + "Username VARCHAR(25) NOT NULL," + "answerDate VARCHAR(25)," + "Timetaken int," + "Score int," + "Difficulty int," + "PRIMARY KEY(StatID)," + "FOREIGN KEY(Username) REFERENCES UserInfo(Username)" + ")";
方案2:暂时不需要外键约束
如果当前不需要设置外键,直接删除代码中的+ "FOREIGN KEY(Username)"这一行,即可正常执行建表语句。
内容的提问来源于stack exchange,提问作者user8933725
相关产品推荐
相关产品推荐

