感觉不到mysql的外键update cascade有啥作用,请教...
更改foreign key约束定义的引用行为(delete cascade/delete set null/delete no action),默认是delete on action
引用行为(当主表中一条记录被删除时,确定如何处理字表中的外部码字段):
delete cascade : 删除子表中所有的相关记录
delete set null : 将所有相关记录的外部码字段值设置为NULL
delete no action: 不做任何操作
就是说如果你只设置了外键,此外键密人定义的引用行为是delete on action
也就是说你删除时候设置外键的表里有数据时就会报错。除非没有数据。
你这问题的概念不明吧。
希望对你有帮助
本节视频我们来聊一聊如何添加数据表的行与列。Treelab 官网:www.treelab.com.cn
如果在父表中找不到候选键,则不允许在子表上进行insert/update
外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下
. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用
. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用
. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
这个是ANSI SQL-92标准,从mysql4.0.8开始支持
. Restrict方式
同no action, 都是立即检查外键约束
. Set default方式
解析器认识这个action,但Innodb不能识别,不知道是什么意思...
注意:trigger不会受外键cascade行为的影响,即不会解发trigger
在mysql中,与SQL标准相违背的三点
1. 如果在父表中有多个key值相同,那么在进行外键check时,会当成有相同key值的其他行不存在; 比如当定义了一个restrict行为外键时,一个子表行对应到多个父表行(具有相同key值), Innodb不允许删除父表上的所有这些行
2. 父子表是同一个表,自我参照时不允许指定on update cascade, on update set null
从mysql4.0.13开始,允许同一个表上的on delete set null
从mysql4.0.21开始,允许同一个表上的on delete cascade
但级联层次不能超出15
3, Innodb在检查unique,constraint约束时,是row by row而不是语句或事务结束;
SQL标准中对constraint的检查是在语句执行完成时
win7旗舰版电脑无法启动MySQL服务,提示错误1067怎么办
可能对于多数的用户来说,对于这个MySQL并不是很了解,其实,MySQL是一个关系型数据库管理系统,如果是做网站的朋友的话,就应该十分的熟悉了,因为一般中小型网站的开发都选择 MySQL 作为网站数据库。不过最近却有使用w764位旗舰版电脑的用户发现了问题,说是自己的win7旗舰版电脑无法登陆mysql服务,说总...
解决mysql下载无法安装问题的方法mysql下载后无法安装
问题1:MySQL下载速度太慢或下载失败。解决方案:1.尝试更改下载源。可以尝试选择一个不同的下载源来下载MySQL,以获得更快的下载速度。建议使用官方站点 https:\/\/dev.mysql.com\/downloads\/ 。2.清空浏览器缓存。有时候,我们在不知不觉中就携带了一些无用的浏览器缓存数据,导致下载网速变慢。清除...
mysql无法启动 服务没有报告任何错误
相信很多人都遇到过安装Mysql的时候出现各种各样的问题,今天小编就教大家解决window下mysql服务没有报告任何错误的情况下无法启动 的问题。本文所用的mysql版本是5.7以上版本,解决方法:注意点1:你在看网上的教程配置完my.ini(自己的mysql配置文件)后不能自己创建一个data文件夹。好多人,包括楼主也是,...
MySQL启动失败
注意这个命令显示完参数后就退出,不会真正运行 mysqld。这个命令和 my_print_defaults mysqld 完全是等价的,只不过后者的显示方式是一行一个参数。然后开始对可疑的参数进行调试,我个人喜欢加的参数和顺序如下:1. 在 mysqld 后加上第一个参数 --no-defaults ,这个参数的作用是通知 mysqld 在启动...
什么是MySql数据库
据说,被Sun收购的公司多薄命,不知道MySQL今后前途如何,希望一路走好。相信MySQL的生命力还是很长久的。 时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的! MySQL常用命令: 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2、创...
在安装Mysql中出现启动服务失败的原因是什么?
注意这个命令显示完参数后就退出,不会真正运行 mysqld。这个命令和 my_print_defaults mysqld 完全是等价的,只不过后者的显示方式是一行一个参数。然后开始对可疑的参数进行调试,我个人喜欢加的参数和顺序如下:1. 在 mysqld 后加上第一个参数 --no-defaults ,这个参数的作用是通知 mysqld 在启动...
mysql和sql server有什么区别
一、开发公司不同 1、SQLserver:SQLserverr是由Microsoft开发和推广。2、Mysql:Mysql由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。二、开发工具包搭配不同 1、SQLserver:SQLserver能与 Microsoft Visual Studio、Microsoft Office System以及开发工具包搭配。2、Mysql:Mysql不能与 Microsoft Visual ...
mysql连接数据库失败,请确定数据库用户名,密码设置正确
现象 一线的工程师反映了一个奇怪的现象,刚刚从 MySQL 官网上下载了一个 MySQL 5.7.31。安装完成后,发现使用任何密码都能登陆 MySQL,修改密码也不管用,重新启动 MySQL 也不能解决。分析 怀疑使用了 --skip-grant-tables 使用 mysqld --print-defaults 检查,没有发现。检查登陆用户,都是 root@...
mysql开启就进不去系统?
一、无法访问系统资源 MySQL 不能访问启动需要的资源是造成而 MySQL 无法启动的一个常见原因,如:文件,端口等。由于 linux 中用于启动 mysqld 进程的 mysql 用户通常是不能登陆的,可以使用类似下面的命令检查文件的访问权限。sudo -u mysql touch \/var\/lib\/mysql\/b 找出问题后,修改对应文件或目录...
mysql究竟有什么用,学了SQL SEVER还用得着学它吗?
进入phpmyadmin就可以实现可视化操作。mysql是开源的,企业都爱用不花钱的东西。sql语句都是一样的你会SQL SEVER上手会更容易。这两年mysql上升势头很猛。
针扶大豆: 楼主非常聪明!parmary key就是主键的意思.下面的表先创建,上面的是外键
建昌县13674118637: mysql外键是什么 - 技术?
针扶大豆: 比如 设置B表中的SID字段的外键是A表中的ID字段假如 删除A表中ID=1的记录 那么B表中的SID=1的记录也同时会被删除不知道说的对不对例子:CREATE TABLE A(id int(5) unsigned NOT NULL auto_increment,ss varchar(100) NOT NULL,...
建昌县13674118637: MySQL如何创建已有表的外键 并且如何查询? - ?
针扶大豆: 解释一下,外键只是一个约束,主要是对父表的新增、修改、删除.和子表的新增,修改;对查询没有任何约束,所以说,你这个sql其实和主外键没有任何关系
建昌县13674118637: 外键与相对主键的关系 - ?
针扶大豆: 你好,主键是一个表的唯一键,也就是说一个表只有一个主键.外键是作为表相关连的字段,如果A表想要关联B表,那就是要在A表中设置一个外键,也就是B的主键设置为A表的外键.
建昌县13674118637: SQL truncate表时提示外键错误 - ?
针扶大豆: nocheck选项只对插入、更新记录有用,对truncate没有用,而且你禁用MRB_OrdersHeaders的外键是没用的,不能truncate的主要原因是MRB_OrdersHeaders表被其它表的外键引用了.如果业务允许,把引用了MRB_OrdersHeaders表的其它表的相应外键都删掉.如果需要保留那些外键,则把相应表里存在的记录都删除就行了.比如MRB_OrdersHeaders表被A表引用,那么就先删除A表中的记录.因为可能涉及级联引用的问题,需要一级级的删除. 删除之后也是不能truncate的,只能delete
建昌县13674118637: 为什么在MySQL数据库中无法创建外键 - ?
针扶大豆: 外键是另一个表中的主键,强调的是表与表之间的联系,用sql语句感觉有点复杂
建昌县13674118637: 在MySQL数据库中为什么无法创建外键 - ?
针扶大豆: 可定可以创建,只不过,外键先得是其他表的主键.否则不行
建昌县13674118637: MySQL中INSERT,UPDATE和REPLACE的区别与用法 - ?
针扶大豆: 我去,insert是插入新的记录,update是更新现有数据,replace是一个函数,比如你要把查询出的字母a都替换成张三,那就用replace
建昌县13674118637: 打开优盘文件是为什么显示windows找不到文件'updat.vbs'.请确定文件名是否正确后,再试一次. - ?
针扶大豆: u盘根目录下 autorun.inf 的文件用记事本打开 看其中是否有 updat.vbs 字符 有就删除掉 这个文件一般是隐藏的
建昌县13674118637: MYSQL的ON DUPLICATE KEY UPDATE奇怪问题,内详! - ?
针扶大豆: 设主键没