使用 ON DELETE CASCADE 定义表时出现语法错误

2024-01-17

我正在尝试使用ON DELETE CASCADE在 MS Access 2007 的 FK 约束中,但我在表定义上遇到错误:

SQL 错误:CONSTRAINT 子句中存在语法错误。

这是创建表的代码:

CREATE TABLE Area (
    Id AUTOINCREMENT PRIMARY KEY, 
    AreaType__Id int NOT NULL, 
    Tbl1 text(31) NOT NULL, 
    Tbl2__Id int NOT NULL, 
    CONSTRAINT UK_Area_1 UNIQUE (Tbl1, Container__Id), 
    CONSTRAINT FK_Area_1 FOREIGN KEY (AreaType__Id) REFERENCES AreaType (Id), 
    CONSTRAINT FK_Area_2 FOREIGN KEY (Tbl2__Id) REFERENCES Tbl2 (Id) ON UPDATE CASCADE ON DELETE CASCADE
);

我究竟做错了什么?我查看了 Access 帮助,我的语法似乎是正确的。我试过删除ON UPDATE CASCADE部分,但得到了同样的错误。我还尝试使用引用表的默认 PK 字段(REFERENCES Container代替REFERENCES Container (Id)),但又出现同样的错误。我也搜索过,但没有找到对我的情况有用的信息。它必须是简单的东西,但我现在还没有看到它。

EDIT

值得一提的是,表定义完全按照原样正常工作,除了没有ON UPDATE CASCADE ON DELETE CASCADE部分。仅在添加后CASCADE零件是否出现错误。

EDIT 2

为了找出问题所在,以下是演示该错误的新测试代码:

这有效:

CREATE TABLE T1 (Id AUTOINCREMENT PRIMARY KEY);

CREATE TABLE T2 (
    Id AUTOINCREMENT PRIMARY KEY, 
    T1__Id int NOT NULL, 
    CONSTRAINT FK_T2_1 FOREIGN KEY (T1__Id) REFERENCES T1 (Id)
);

这会产生错误:

CREATE TABLE T1 (Id AUTOINCREMENT PRIMARY KEY);

CREATE TABLE T2 (
    Id AUTOINCREMENT PRIMARY KEY, 
    T1__Id int NOT NULL, 
    CONSTRAINT FK_T2_1 FOREIGN KEY (T1__Id) REFERENCES T1 (Id) ON DELETE CASCADE
);

任何人都可以复制该错误吗?


Your CREATE语句是有效的 Access DDL,但是must使用ADO执行。

这是一个立即窗口会话,它演示了问题......

strSql = "CREATE TABLE T2 (" & vbCrLf & _
"    Id AUTOINCREMENT PRIMARY KEY, " & vbCrLf & _
"    T1__Id int NOT NULL, " & vbCrLf & _
"    CONSTRAINT FK_T2_1 FOREIGN KEY (T1__Id) REFERENCES T1 (Id) ON DELETE CASCADE" & vbCrLf & _
");"

' executing that statement with DAO triggers error 3289,
' "Syntax error in CONSTRAINT clause."
' (CurrentDb.Execute is a DAO Method)
CurrentDb.Execute strSql ' DAO -> fail

' CurrentProject.Connection.Execute is an ADO method,
' so this attempt executes without error
CurrentProject.Connection.Execute strSql ' ADO -> OK

请注意,如果您尝试从 Access 查询设计器执​​行该语句,该语句也使用 DAO,因此也会触发错误 3289。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ON DELETE CASCADE 定义表时出现语法错误 的相关文章

  • 使用参数将数据插入access数据库

    我有以下方法将数据插入到访问数据库中 该方法工作正常 但如果我尝试插入包含我学到的单引号的文本 我确实会遇到问题 WebMethod public void bookRatedAdd string title int rating stri
  • Access 中的 VBA:DoCmd.RunCommand acCmdSaveRecord 如何工作?

    I use DoCmd RunCommand acCmdSaveRecord 保存 但我不确定这实际上是如何工作的 它会保存所有未保存的更改吗 或者无论是否更改它都会保存所有内容吗 还是只保存当前表单 其他形式的相关未保存更改又如何呢 或者
  • 如何使用 pyodbc 和 MS-Access 在 Python Cursor.execute 中查看真实的 SQL 查询

    我在 Python 中使用以下代码 使用 pyodbc 作为 MS Access 基础 cursor execute select a from tbl where b and c x y 没关系 但是出于维护目的 我需要知道发送到数据库的
  • 拆分 MS Access 数据库 - 前端部分位置

    最佳实践之一按照微软的规定 http msdn microsoft com en us library dd942824 aspx odc ac2007 ta PerformanceTipsToSpeedUpYourAccessDB Mul
  • 从文本文件加载数据然后将其存储到数据库的最快方法

    我有问题 我正在开发一个项目 但我陷入了这一部分 我想从文本文件加载数据并将其存储到数据库访问中 things 是每个文本文件内的数据 大约 12 000 行数据 每个文本文件大约需要 10 分钟来处理 注意 在存储数据之前 我将文本文件中
  • #DELETE 在 Access 中查看 SQL Server 表

    今天早上又出现了一个新问题 我的数据库驻留在 SQL Server 上 并使用 Access 作为前端 其中一个已经使用了至少 10 年的数据库今天突然停止工作 我发现这个问题影响了 2 个 可能更多 我没有检查所有 表 当我在访问中打开表
  • 需要帮助在 MS Access 中实施完全外部联接

    我无法让查询在 Access 中正常工作 我需要 dbo cardpurchases 和 dbo vendors 上的完整外部联接 以便所有所有供应商都将出现在查询中 无论是否在该供应商处进行购买 但 Access 不支持完全外部联接 我还
  • Access SQL 查询:查找表中每个不同条目的最新日期行

    All 我确信这是一个非常简单的 SQL 查询问题 但我确信有一个很好的方法 也有一个非常糟糕的方法来做到这一点 如果由我自己决定 我很可能会得到后者 所以 我在 Access 中有一个表 其中的数据如下所示 ID Value As of
  • 如何将 UILabel 与个人资料照片图像水平对齐?

    我必须显示名称和电子邮件 ID 与个人资料图像正确水平对齐 这样姓名和电子邮件 ID 就出现在 UIImageView 的中心 但您可以看到姓名和电子邮件 ID 不在个人资料图片的中心 为什么会发生这种情况 我给出了以下限制 删除前导和尾随
  • 参数太少错误,同时未使用参数占位符

    我尝试使用 PYODBC 在 Access 数据库中执行 SQL 查询 但出现以下错误 pyodbc Error 07002 07002 Microsoft ODBC Microsoft Access 驱动程序 参数太少 预期为 1 301
  • 如何在 C# 中使用窗口窗体创建动态下拉列表

    我正在尝试为朋友的手机商店构建一个简单的库存程序 我想使用C 并访问数据库来存储数据 DB 将有 2 个主要列表 devices 品牌 型号 颜色 价格 库存 最小库存 parts 品牌 型号 描述 库存 最小库存 GUI 将使用多个下拉列
  • schema.ini 文件不适用于 MS Access

    我有一堆 csv 文件 我通过 VBA 将它们导入到 Access 中的表中 我在与导入的 csv 文件相同的目录中还有一个 schema ini 文件 尽管在 ini 文件中字段被指定为双精度类型 但它们在 Access 中会转换为文本类
  • VB SQL 语句未选择正确的行

    我试图使用 SELECT 语句在我的数据库中 选择 一个人 但它没有选择正确的人 我也不确定为什么 我正在使用访问数据库 数据库连接代码 Imports System Data OleDb Module Database Connectio
  • 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型“130”不在映射文件中

    我正在尝试将大型 Access mdb 数据库导出到 SQL Server 数据库 但遇到了 Microsoft DTS 无法识别 Access 数据库中特定类型字段的数据类型的问题 我查看了相关的访问表 它们被设置为长度为 1 的 文本
  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • 字典、集合和数组的比较

    我正在尝试找出字典与集合和数组相比的相对优点和功能 我发现了一篇很棒的文章here http www experts exchange com articles 3391 Using the Dictionary Class in VBA
  • MS Access - 粘贴确认事件后

    当用户将记录直接粘贴到数据表子报表中时 是否可以在显示粘贴确认消息后捕获事件 我需要它能够在审计表中创建新记录时进行记录 通过捕获更新前 更新后和插入事件 我可以轻松创建已添加的记录集合 准备将详细信息插入审核日志 但是在所有这些事件触发后
  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title

随机推荐

  • 使

    我在 SO 上看到过类似的主题 但我的略有不同 我试图让我的父级 DIV 和子级 保持焦点 直到我将注意力从 div 上移开 但这似乎很难完成 This solution https stackoverflow com a 3089045
  • 使用 Cocoa 的 Accessibility API 获取应用程序的 Dock 图标的位置

    如何使用 Accessibility API 获取应用程序的 Dock 图标的位置 找到了 使用这个论坛帖子 http cocoadev com forums discussion 1431 getting dock icon positi
  • Elasticsearch.Net 和超时

    我有一个 4 节点的 Elasticsearch 集群 我有一个 net 控制台应用程序 旨在用来自 sql 的数据填充集群 只要我将添加 或删除 记录的速度保持在相当低的水平 一切都会正常 如果我最终增加线程数 我将从控制台应用程序中看到
  • 无法在 AngularJS 中从控制器设置日期选择器日期

    我正在尝试按按钮创建一个 AngularJS 日期选择器 我在用this http angular ui github io bootstrap datepickerbootstrap ui 控件 该控件可以工作 单击按钮就会弹出 我可以选
  • 通过 Go (go 1.18) 泛型创建类型化值的新对象

    我正在 go 1 18 的 beta 版本中使用泛型 下面示例中的创建函数应该创建新的实例 T 所以 Apple 我尝试使用反射包来实现这一点 但没有运气 你能告诉我如何更改功能吗Create从下面的示例中 它创建了实例T而不是返回 nil
  • 将所有代码从 master 转移到新分支并从 master 中删除代码

    我的代码位于项目的主分支中 我希望代码位于单独的分支中 而不是在主分支中 我可以创建一个新的分支master 但是在创建分支之后 是否可以从主分支中删除所有代码 这样如果我稍后重新调整或将我的新分支合并到主分支中 就不会导致任何问题 谢谢
  • NodeJS javascript 中的异步响应循环

    我有一个使用 Express 4 的 NodeJS API 我使用 Sequelize 连接到数据库 并多次调用一个查询 我想将结果累积到一个数组中 问题是res send不等待循环结束来发送答案 my code router post p
  • 具有 SSE4.1 内在函数的双线性滤波器

    我现在正在尝试找出一种一次仅针对一个过滤样本的相当快速的双线性过滤函数 作为习惯使用内在函数的练习 最高可达 SSE41 就可以了 到目前为止我有以下内容 inline m128i DivideBy255 8xUint16 const m1
  • 查找 XML 节点集的最低公共祖先

    我有一个使用 XSLT 中的 xsl key 结构构造的节点集 我想找到该节点集中所有节点的最低共同祖先 LCA 有什么想法吗 我了解 Kaysian intersects 和 XPath 的 intersect 函数 但这些似乎是为了找到
  • Celery + SQS 两次接收相同的任务,同时具有相同的任务 ID

    在 Flask 应用程序中使用带有 SQS 的 celery but celery 同时接收两次具有相同任务 ID 的相同任务 像这样运行工人 celery worker A app jobs run l info pidfile var
  • 使用 TKAgg 的 Matplotlib、Pylab:在 win32 上使用 plt.ion() 时遇到 PyEval_RestoreThread: NULL tstate

    EDIT 呸 终于找到了关于Runtime Error的讨论 虽然重点是使用PythonWin 而我当时还没有安装 安装 PythonWin 并设置 GTK 后 按照先前的问题 https stackoverflow com questio
  • Git:将提交合并到不同的分支中

    所以我有3个分支 develop 我的持续开发分支 version 1 一个发布分支 version 2 一个发布分支 我必须做一个修补程序version 2要重新发布该版本 需要在 2 个文件中进行 2 行更改 非常小 我想将该修复应用于
  • 文件类型 - 获取原始扩展名

    如果文件已重命名 如何查找文件扩展名 有没有可用的工具 示例 我有一个文件 1 doc 我希望大家知道这是一个我刚刚重命名为 1 txt 的Word文档 但该文件原本是Word文档 如何获得原始文件扩展名 当然可以 这是适合您的 C 代码
  • 如何隐藏 Chrome 中 HTML5
    元素上默认显示的箭头?

    现在还为时过早 但我也知道你们已经掌握了一切 我想使用HTML5 详细信息元素 http www w3 org TR html5 interactive elements html the details element
  • XSS 酷刑测试 - 它存在吗?

    我正在寻找编写一个 html 清理程序 显然为了测试 证明它可以正常工作 我需要一组 XSS 示例来对抗它 看看它的性能如何 这是一个 编码恐怖 中的好例子 http www codinghorror com blog archives 0
  • 带有手动触发器和选择器选项的 Bootstrap 工具提示

    我有一个动态表 加载了ajax 我想当我将鼠标悬停在某个对象上时显示工具提示row 但我希望工具提示出现在某个特定的位置上cell 与类 name 而不是在整行上方 另外 使用 title 函数 我需要能够获取最接近的行 ID 并返回自定义
  • 查找打印机是否在线并准备好打印

    以下 4 个问题没有帮助 因此这不是重复的 ONE https stackoverflow com questions 16516155 check if printer is shutdown or not using printerst
  • SWI Prolog - 简化表达式

    我想编写一个过程 simple E E1 它能够简化表达式 我只有一个操作 以及符号和数字操作数 此过程的示例 simplify a 1 b 5 E gt E a b 6 simplify 1 b 9 a 5 c E gt E b a c
  • InteractivePopGestureRecognizer 损坏根视图控制器上的导航堆栈

    In my UINavigationController我添加了自定义后退按钮 其副作用是无法再从左向右滑动以弹出视图控制器并导航回来 所以我实施了interactivePopGestureRecognizer按照我的习惯UINavigat
  • 使用 ON DELETE CASCADE 定义表时出现语法错误

    我正在尝试使用ON DELETE CASCADE在 MS Access 2007 的 FK 约束中 但我在表定义上遇到错误 SQL 错误 CONSTRAINT 子句中存在语法错误 这是创建表的代码 CREATE TABLE Area Id