MySql中如何使用触发器制作外键

2023-12-31

我想使用触发器在MySql中创建外键。我有以下表格: 1)“内容”表: 教师 ID varchar(20) 子 ID varchar(20) 路径 varchar(100) 文件名 varchar(100)

2)“老师”表: 教师 ID varchar(20) 教师姓名 varchar(45)

我使用以下代码作为触发器(分隔符//):

CREATE TRIGGER fk_content_teacher_temp BEFORE INSERT ON `content`
FOR EACH ROW
BEGIN
DECLARE has_row TINYINT;
SET has_row = 0;
SELECT 1 INTO has_row FROM `teacher` INNER JOIN `content` ON content.teacher_id=teacher.teacher_id;
IF has_row=0 THEN
INSERT error_msg VALUES ('Foreign Key Constraint Violated!');
END IF;
END//

问题是,当我尝试在内容表中插入教师表中不存在的教师 ID 时,出现以下错误:

1172 - 结果由多行组成

我该怎么做才能使它正常工作,或者我可以使用触发器来制作外键的任何其他方式? 先感谢您!


虽然尚不清楚“使用触发器创建外键”语句的具体意图,但您当前的问题是SELECT INTO不能在返回多个结果的查询中使用。

SELECT 1 INTO has_row FROM teacher INNER JOIN content ON content.teacher_id=teacher.teacher_id;返回两个表之间的所有匹配项。

如果您想检查是否teacher包含teacher_id价值被用于新的content记录,您应该能够完全删除 JOIN 子句并像这样查询:

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

MySql中如何使用触发器制作外键 的相关文章

  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • PostgreSQL 中“-”处或附近的语法错误

    我正在尝试运行查询来更新用户密码 alter user dell sys with password Pass 133 但因为 它给了我这样的错误 ERROR syntax error at or near LINE 1 alter use
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • Sequelize.js 中的自定义或覆盖连接

    我需要使用创建自定义连接条件Sequelize js http sequelizejs com使用 MSSQL 具体来说 我需要加入TableB基于一个COALESCE中的列的值TableA and TableB并最终得到这样的连接条件 L
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • 如何通过 SQL 表关联 SQL 中的实体

    我是数据库设计的初学者 我需要为项目创建数据库 我可以用面向对象的术语解释我想要做什么 值得庆幸的是 数据库专家会很友善地向我解释如何在数据库方面处理这个问题 我想创建一个与位置实体 州 城市 有关系的用户 ID 名称 实体 所以在编程语言
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • 如何处理数据库中的巨大结果集

    我正在设计一个多层数据库驱动的 Web 应用程序 SQL 关系数据库 用于中间服务层的 Java 用于 UI 的 Web 语言其实并不重要 中间服务层执行数据库的实际查询 用户界面只是要求某些数据 并不知道它是由数据库支持的 问题是如何处理
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam
  • Flutter 中有预填充数据库使用的示例吗?

    Flutter 中有预填充数据库使用的示例吗 我不需要 CRUD 示例 此时我只需要从数据库读取数据即可 我是 Flutter 新手 所以一步一步的教程会很好 您可以将您的应用程序与预填充的 sqlite 数据库捆绑在一起assets文件夹
  • MySQL 转储未知选项“-no-beep”

    在旧服务器上我使用了mysql转储命令来备份 MySQL 数据库 在新服务器上 MySQL 版本为 5 6 相同的命令给出了错误 unknown option no beep 无论它插入什么 我也在互联网上搜索过 但找不到任何帮助 在 my

随机推荐

  • 如何在 Java 中将十六进制字符串转换为字节值

    我有一个字符串数组 我想将它转换为字节数组 我使用Java程序 例如 String str aa 55 转换成 byte new byte 0xaa byte 0x55 我能做些什么 String str Your string byte
  • 通过ParentProcessID杀死进程

    我想通过其 ParentProcessID 终止正在运行的进程 我想像您在命令行中一样执行此操作 wmic process where parentprocessid 3008 terminate 但现在的问题是 在 PowerShell
  • 仪表 D3,显示值位置

    我正在尝试使用一些现成的 JavaScript 来制作仪表 我快到了 但我不知道如何管理值标题 Here is how my code works now And this is how I like it to work 不知道如何处理问
  • 在 Apache Spark (Scala) 中使用 reduceByKey

    我有一个类型为 用户 ID 名称 计数 的元组列表 例如 val x sc parallelize List a b 1 a b 1 c b 1 a d 1 我试图将这个集合简化为一种类型 其中每个 元素名称被计算在内 所以上面的 val
  • 在 Ruby 脚本中重定向 stdout 时出现问题

    我有以下测试 Ruby 脚本 require tempfile tempfile Tempfile new test stderr reopen tempfile stdout reopen tempfile puts test stdou
  • 使用特殊字符的 PHP 变量/函数/类名称

    我理解下划线 是命名变量 函数 类等的可接受字符 但是我想知道是否还有其他可以使用的特殊字符 我测试了一些 但没有运气 并且很长一段时间以来一直假设没有 但我想我会看看是否有其他人确切知道 这主要是出于美观的目的 但是我想在与其他开发人员合
  • 更新列表中的子项会更新 C# 中的所有项

    这是我的清单 public class PayRateDaysModel public string day name get set public List
  • 计算字段上的 SSRS 聚合

    我正在尝试对 SSRS 中的计算字段执行聚合 但收到以下错误 rsAggregateReportItemInBody textrun Textbox43 Paragraphs 0 TextRuns 0 的值表达式在报表项上使用聚合函数 聚合
  • Flask request.remote_addr 在 webfaction 上是错误的并且没有显示真实用户 IP

    我刚刚在 Webfaction 上部署了一个 Flask 应用程序 我注意到request remote addr总是127 0 0 1 这当然没有多大用处 如何在 Webfaction 上的 Flask 中获取用户的真实 IP 地址 Th
  • Firestore 文档的最大字段数?

    现在我有一个products我将产品存储为如下文档的集合 文档ID title STRING price NUMBER images ARRAY OF OBJECTS userImages ARRAY OF OBJECTS thumbnai
  • 未找到映射器类

    有时我的 MR 工作会抱怨找不到 MyMapper 类 我必须给 job setJarByClass MyMapper class 告诉它从我的 jar 文件加载它 cloudera cloudera vm tmp translator h
  • dmidecode 的 C/C++ API

    dmidecode列出了各种硬件参数 包括实际安装的 DRAM 模块的尺寸 型号和序列号 不使用system 并解析输出文本 是否有一个编程接口可以通过 C C 获取相同的信息 例如 dmidecode type 17 dmidecode
  • 在用户定义函数中创建、删除和插入临时表

    我正在尝试根据我的要求创建一个函数 但是 什么时候创建或删除 tempTable 它给出的错误为 在函数中无效使用副作用运算符 删除对象 我的理解是我们不能拥有create drop or insert操作于 temptable在一个函数中
  • 如何在iOS自动布局中动态更改字体大小?

    我想将我的文字放入UILabel 但对于不同的 iPhone 尺寸UILabel正在改变 因为我正在使用自动布局 但我无法修复字体大小 所以我的文本被剪掉了 有什么方法可以设置任何约束以使文本适合UILabel动态地 看到这里 由于屏幕分辨
  • 为什么 UserPrincipal.FindByIdentity 返回有关 GUID 为 32 位的错误?

    我的应用程序使用UserPrincipal类来确定用户属于哪些组 然后使用该信息来确定用户是否经过身份验证才能使用我的应用程序 有一段时间一切都很好 但最近我开始遇到异常 Guid 应包含 32 位数字和 4 个破折号 xxxxxxxx x
  • SQL 和 C# 中两个日期计算之间的日期差异产生不同的结果

    我正在计算两个日期的日差 在 C 中 diffdays EndDate StartDate Days 因此 考虑到结束日期为 6 26 2015 开始日期为 6 10 2015 diffdays 值为 15 如调试时的 自动 部分所示 在
  • 在 WordPress 中缓存自定义社交分享计数

    我真的很喜欢有一个股票柜台在我的博客文章上 我注意到它实际上鼓励访问者自己分享内容 因为没有真正令我满意的 WordPress sharecount 插件 其中大多数都需要大量调用 所以我自己编写了代码 它工作完美 但仍然减慢了我的网站速度
  • JavaScript - 我如何了解“闭包”的用法?

    维基百科 自由的百科全书 闭包 计算机科学 在计算机科学中 闭包是 在中评估的函数 环境包含一个或多个 绑定变量 当被调用时 函数可以访问这些变量 闭包的显式使用是 与函数式编程相关 以及诸如 ML 和 口齿不清 诸如以下对象的构造 其他语
  • 在 Electron 中处理表单的正确方法是什么?

    表单 html 和提交事件是 渲染器 的一部分 提交的数据应该在主流程中可用 提交表单并使数据可在 main js 中访问的正确方法是什么 我应该简单地使用 远程 模块将数据传递到 main js 中的函数还是有更好的方法 我们使用服务 A
  • MySql中如何使用触发器制作外键

    我想使用触发器在MySql中创建外键 我有以下表格 1 内容 表 教师 ID varchar 20 子 ID varchar 20 路径 varchar 100 文件名 varchar 100 2 老师 表 教师 ID varchar 20