首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 学习笔记(三):完整性和触发器设计

.. on delete cascade on update cascade, /*定义Cno为外键参考course表的主键Cno,并且实现级联删除SC表中相应的元组 */ );  2....其实这里理论上来说应该是插入失败的,因为 student 有检查约束,但不同于SQL,在MYSQL中,CHECK只是一段可调用但无意义的子句。MySQL会直接忽略。...Course(cno) on delete cascade; 发现报错Can't write; duplicate key in table '#sql-1f2_7',发现原来是这里的约束名和前面的重复了...(二)触发器 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。...原因:在mysql的trigger和function中不能出现select * from table形式的查询,因为其会返回一个结果集;而这在mysql的trigger和function中是不可接受的,

1.5K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL8 中文参考(二)

    ** 如果在运行mysqld时出现错误或问题,请尝试提供一个可重现异常的输入脚本。...在您的错误报告中指出您已经检查了参考手册和邮件存档,以便其他人知道您已经尝试自己解决问题。 如果您的数据看起来损坏或者在访问特定表格时出现错误,请首先使用CHECK TABLE检查您的表格。...另一方面,自引用的ON DELETE SET NULL是可能的,就像自引用的ON DELETE CASCADE一样。级联操作不能嵌套超过 15 层。...基本理念是,MySQL 服务器尝试为解析要执行的语句中可以检测到的任何内容生成错误,并尝试从执行语句时发生的任何错误中恢复。在大多数情况下,我们会这样做,但还不是全部。...可用的引用操作包括RESTRICT、CASCADE、SET NULL和NO ACTION(默认)。 MySQL 服务器也支持SET DEFAULT,但当前被InnoDB拒绝为无效。

    21010

    SQL命令 DROP TABLE

    尝试删除不存在的表会生成SQLCODE-30错误。 表定义必须是可修改的。如果投影表的类没有定义[DdlAllowed],则尝试删除该表会生成SQLCODE-300错误。...如果可能出现锁争用,那么在发出DROP TABLE之前以独占模式锁定表是很重要的。 该表必须没有关联的视图,或者DROP TABLE必须指定CASCADE关键字。...尝试删除会使子类成为孤立的超类时,会生成SQLCODE-300错误,并显示以下消息:Class 'MySuperClass' has derived classes and therefore cannot...否则,操作将失败,并出现SQLCODE-300错误,同时未为类‘Schema.tablename’启用%msg DDL。...在尝试DROP TABLE操作之前未删除这些外键约束会导致SQLCODE-320错误。 此默认行为与限制关键字选项一致。外键约束不支持CASCADE关键字选项。

    1.3K60

    SQL命令 CREATE TABLE(五)

    当尝试更改(更新)引用表中行的主键值时,ON UPDATE子句定义应该对引用表中的行执行什么操作。...SQL支持以下外键引用操作: NO ACTION SET DEFAULT SET NULL CASCADE NO ACTION-删除行或更新被引用表中的键值时,将检查所有引用表,以查看是否有任何行引用要删除或更新的行...SET NULL-删除行或更新被引用表中的键值时,将检查所有引用表,以查看是否有任何行引用要删除或更新的行。如果是,则该操作会导致引用要删除或更新的行的外键字段设置为NULL。外键字段必须允许空值。...根据ANSI标准,如果定义了对同一字段执行相互矛盾的引用操作的两个外键(例如,ON DELETE CASCADE和ON DELETE SET NULL), SQL不会发出错误。...相反,当DELETE或UPDATE操作遇到这些相互矛盾的外键定义时, SQL会发出错误。 下面是一个嵌入式SQL示例,它发出一条使用两个引用动作子句的CREATE TABLE语句。

    1.8K50

    SQL 与 MySQL 基础

    分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。 逗号通常用来分隔列名或表达式、值或子查询等元素。...,切换到需要修改的数据库下): SET NAMES utf8mb4; 查看 MySQL 当前字符集: SHOW VARIABLES LIKE 'character_set%'; ---- SQL数据类型...]] [ALTER COLUMN 列名 新数据类型] ADD:添加一个新的列 DROP:删除一个列,支持可以添加 RESTRICT 或 CASCADE: 默认是 RESTRICT,表示如果此列作为其他表的约束或视图引用到此列时...---- 我们可以通过使用 DELETE 来删除表中的数据: DELETE FROM 表名 通过这种方式,将删除表中全部数据,我们也可以使用 WHERE 来添加条件,只删除指定的数据: DELETE FROM...,新的内容会被插入到 NEW 表中; 在DELETE操作时,旧的内容会被移到 OLD 表中,我们仍可在 OLD 表中拿到被删除的数据; 在UPDATE操作时,旧的内容会被移到 OLD 表中,新的内容会出现在

    1.9K20

    SQL基础--> 约束(CONSTRAINT)

    server 2005中的演示,不存在上述出现的问题 --理论上空字符串('')并不等于NULL,不知道为什么在Oracle 10g中出现了错误提示 CREATE TABLE tb_constraint...FOREIGN KEY: 在表级指定子表中的列 REFERENCES: 标示在父表中的列 ON DELETE CASCADE: 当父表中的列被删除时,子表中相对应的列也被删除 ON DELETE...SET NULL: 子表中相应的列置空 如果子表在建外键时,该列的数据并不在父表,则无法创建该约束。...ON DELETE SET NULL 和 ON DELETE CASCADE对外键约束的影响 ON DELETE SET NULL 子句的作用是,当主表中的一行数据被删除时,ORACLE自动将从表中依赖于...CASCADE 子句的作用是,当主表中的一行数据被删除时,ORACLE自动将从表中依赖于它的记录外键也删除。

    1.7K20

    MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

    序号 类型 地址 1 MySQL MySQL操作之概念、SQL约束(一) 2 MySQL MySQL操作之数据定义语言(DDL)(二) 3 MySQL MySQL操作之数据操作语言(DML)(三) 4...MySQL管理之存储过程 12 MySQL MySQL管理之视图 13 MySQL MySQL管理之数据备份与还原 14 MySQL Linux(centos 7.5)服务器安装MySQL 15 MyBatis...FK_ID错误。应为FK_ID。、 添加数据时:从表的外键,只能添加主表主键中存在的数据。 删除数据时:需要先删除从表中与主表关联数据,再删除主表中数据。...参数名称 功能描述 CASCADE 删除包含与已删除键值有参照关系的所有记录 SET NULL 修改包括与已删除键值有参照关系的所有记录,使用NULL值替换(不能用于已标记为NOT NULL的字段) NO...主表 (主键); [ON DELETE{CASCADE | SET NULL | NO ACTION | RESTRICT}] [ON UPDATE{CASCADE | SET NULL | NO

    27530

    第13章_约束

    它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL 规范以约束的方式对表数据进行额外的条件限制。...# 6.7 约束等级 Cascade方式 :在父表上 update/delete 记录时,同步 update/delete 掉子表的匹配记录 Set null方式 :在父表上 update/delete...-+ 3 rows in set (0.00 sec) (2)演示 2:on update set null on delete cascade create table dept( did int...null on delete cascade #把修改操作设置为set null等级,把删除操作设置为级联删除等级 ); insert into dept values(1001,'教学部')...添加数据时,没有任何错误或警告 但是 MySQL 8.0 中可以使用 check 约束了。

    39330

    SqlAlchemy 2.0 中文文档(五十五)

    由于运行时错误不容易重现,并且通常发生在程序运行时对某些任意条件的响应中,它们更难以调试,也会影响到已经投入生产的程序。 在本节中,目标是尝试提供关于一些最常见的运行时错误以及编程时错误的背景信息。...造成这种情况的常见原因是应用程序使用 ORM 会话,但在完成涉及该会话的工作后未调用 Session.close()。...当此错误出现意外时,通常是因为在对对于关系,delete-orphan 级联通常仅在一对多关系的“一”侧配置,并不在多对一或多对多关系的“多”侧上。...当这种错误出现时,通常是因为在错误消息中描述的错误消息响应中应用了relationship.single_parent标志,实际上问题是对“delete-orphan”级联设置的误解。...当尝试使用不兼容的 DBAPI 时,通常会引发此错误。

    44310

    【MySQL】04_约束

    如果类型不一样,创建子表时,就会出现错误“ERROR 1005 (HY000): Can't create table'database.tablename'(errno: 150)”。...方式 :在父表上update/delete记录时,同步update/delete掉子表的匹配记录 Set null方式 :在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为...# 演示1:on update cascade on delete set null create table dept( did int primary key, #部门编号 dname varchar...on delete set null #把修改操作设置为级联修改等级,把删除操作设置为set null等级 ); # 演示2:on update set null on delete cascade...null on delete cascade #把修改操作设置为set null等级,把删除操作设置为级联删除等级 ); # 演示3:on update cascade on delete cascade

    2.4K20

    MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解

    它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对 表数据进行额外的条件限制 。...如果类型不一样,创建子表时,就会出现错误“ERROR 1005 (HY000): Can’t create table’database.tablename’(errno: 150)”。...Cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录 Set null方式:在父表上update/delete记录时,将子表上匹配记录的列设为null...null on delete cascade #把修改操作设置为set null等级,把删除操作设置为级联删除等级 ); insert into dept values( 1001 ,'教学部');...添加数据时,没有任何错误或警告 但是 MySQL 8.0中可以使用check约束了 。

    24610

    Mysql基础命令02

    当in前面加上not时,表示与in相反,既不在结果中 sql> select bName,publishing,price from books where price in (30,40,50,60...where条件中又出现select 查询类型为网络技术的图书 mysql> select bName,bTypeId from books where bTypeId=(select bTypeId...CASCADE ON UPDATE CASCADE) user1中不存在id为6的记录,现在添加一条id为6的记录 insert into user1(id)values(6); 2、视图 是一张虚拟表...在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。...mysql数据结构 主配置文件 my.cnf 数据目录:/var/lib/mysql 进程通信sock文件 :/var/lib/mysql/mysql.sock 错误日志文件 [mysqld_safe

    58020

    SqlAlchemy 2.0 中文文档(五十八)

    参考:#10414 sql [sql] [bug] 修复了在 UPDATE 语句的 SET 子句中引用 FROM 条目时,如果该条目在语句中没有其他地方出现,则不会将其包含在 UPDATE 语句的...ORM 实体的 Core SQL 语句时出现内部属性错误, 在这种情况下,ORM 启用的 UPDATE 和 DELETE 语句。...mysql [mysql] [bug] 修复了在 MySQL 列中未正确反映 NULL/NOT NULL 的问题,该列还指定了 VIRTUAL 或 STORED 指令。...参考:#10414 SQL [SQL] [错误] 修复了在 UPDATE 语句的 SET 子句中引用 FROM 条目不会将其包括在 UPDATE 语句的 FROM 子句中的问题,如果该条目在语句中没有其他地方出现...参考文献:#10139 【orm】【错误】 修复了一个问题,即基于字典的集合(如attribute_keyed_dict())未正确地完全序列化/反序列化,导致在反序列化后尝试突变此类集合时出现问题

    16710
    领券