【问题标题】:Creating an Access table with sql query and default bit values使用 sql 查询和默认位值创建 Access 表
【发布时间】:2015-11-09 16:44:06
【问题描述】:

这是我创建表的代码(在access中设计查询的sql视图中)

 CREATE table Track (WebCompareString CHAR(255), Master INT, Child INT, 
 Merged BIT NOT NULL DEFAULT 0, Children_Updated BIT NOT NULL DEFAULT 0,
 Deleted BIT NOT NULL DEFAULT 0, TrackId INT PRIMARY KEY;

当尝试 run! 时,我收到以下错误: CREATE TABLE 语句中的语法错误。

【问题讨论】:

  • 见编辑 2,它在 VBA 中使用 CurrentProject.Connection.Execute

标签: sql ms-access vba


【解决方案1】:

缺少右括号是一个小问题。

主要问题是Access SQL中对DEFAULT子句的支持有限。

您需要通过 ADO 连接运行 SQL 命令:
SQL SET DEFAULT not working in MS Access

或将“查询设计”下的“访问”选项设置为 ANSI 92 兼容:
SQL to add column with default value

编辑

是的,我在 Access 2010 的 .accdb 中测试了第二个选项(仅第二个)。
我设置了选项Object Designer - Query design - SQL Server Compatible Syntax (ANSI 92) - Use in this database。 (因为我有德语访问权限,所以猜到了确切的措辞)。

Access 显示警告,然后执行自动压缩和修复。之后,我可以在新查询中执行来自问题的 SQL,只需将右括号添加到 SQL 字符串。

是/否字段是使用default value = 0 创建的。

编辑 2

SQL Server Compatible Syntax (ANSI 92) 选项恢复为未选中状态,我也测试了第一个建议,只需遵循 HansUp 的代码即可。
以下子使用默认值创建了表。

Public Sub CreateTrackTable()

    Dim S As String

    S = "CREATE table Track (WebCompareString CHAR(255), Master INT, Child INT, " & _
        "Merged BIT NOT NULL DEFAULT 0, Children_Updated BIT NOT NULL DEFAULT 0, " & _
        "Deleted BIT NOT NULL DEFAULT 0, TrackId INT PRIMARY KEY);"

    CurrentProject.Connection.Execute S

End Sub

因此,您无法从查询设计器运行此查询(除非您设置了语法选项),但您可以从 VBA 执行此操作。

【讨论】:

    【解决方案2】:

    您在末尾缺少一个右括号。在 ';' 之前添加一个 ')'。添加后,此语句成功完成(使用 MySQL)。

    【讨论】:

      【解决方案3】:

      你忘记了最后的')'。

      CREATE table Track (WebCompareString CHAR(255), Master INT, Child INT, 
      Merged BIT NOT NULL DEFAULT 0, Children_Updated BIT NOT NULL DEFAULT 0,
      Deleted BIT NOT NULL DEFAULT 0, TrackId INT PRIMARY KEY);
      

      【讨论】:

        【解决方案4】:

        如果您粘贴的代码正确,那么您可能错过了最后的右括号。

        【讨论】:

          【解决方案5】:

          您缺少结尾括号。您还应该查看 SQL 命名约定和最佳实践 (Database, Table and Column Naming Conventions?)。祝你好运!

           CREATE table Track (
             TrackId INT PRIMARY KEY,
             WebCompareString CHAR(255),
             Master INT,
             Child INT, 
             Merged BIT NOT NULL DEFAULT 0,
             Children_Updated BIT NOT NULL DEFAULT 0,
             Deleted BIT NOT NULL DEFAULT 0) ;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-25
            • 1970-01-01
            相关资源
            最近更新 更多