ALTER TABLE语句中的DEFAULT子句导致语法错误

时间:2012-05-04 00:02:27

标签: sql ms-access vb6 jet

我有一个客户希望自定义一个旧的Visual Basic 5应用程序,该应用程序使用Access 97数据库和Jet 3.5作为数据库引擎。

所需的自定义需要将列添加到现有表中。以下工作正常:

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE"
pdbDatabase.Execute strSQL

但是,我想为新列设置默认值(即0或1)。我尝试了以下几种变体:

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE DEFAULT 1"

但它们都会导致错误,指出“ALTER TABLE语句中的语法错误。(3293)”

在研究这个问题时,我已经看到一些信息,这些信息在我过时的Access 97和Jet 3.5配置中不支持DEFAULT子句。

任何人都可以证实这一点或指出我正确的方向让它发挥作用吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您可以使用DAO对象执行此操作。

Microsoft说这是关于修改Access表的:

此外,某些类型的Microsoft Access特定属性(如字段的ValidationRule和DefaultValue属性)只能通过Microsoft Access用户界面或代码中的DAO进行设置。

您可以在下面的链接中阅读更多相关信息。有一些例子,虽然我没有看到他们使用DefaultValue属性具体显示的位置。 http://technet.microsoft.com/en-us/library/cc966376.aspx

答案 1 :(得分:1)

Per Access 97 / Jet 3.5 SQL文档在描述ALTER Table或CREATE Table语句时,未提及DEFAULT子句。它在这里被描述为Jet 4.0的一个新功能:http://support.microsoft.com/kb/275561

我确定的唯一方法是设置默认值是在gui中打开表设计然后在字段属性下输入默认值。您是否可以访问Access 97的安装?

虽然,我也猜测用VB / VBA你可以访问字段的默认值属性并设置或修改 - 只是不使用sql。