大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
外键约束对父表的含义:
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了凤凰免费建站欢迎大家使用!
在父表上进行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, 都是立即检查外键约束
不知道这文章对你有没有帮助!
格式:update 表名称 set 字段名称 = 字段名称 + 1 [ where语句]
比如说数据库中有一张student表,要想把id为1的学生成绩(score)加1则
update student set score=score+1 where id = 1
如果你不加where系统就不会知道你具体要更新哪条记录,而导致所有该表中score都增加1,当然,除非这就是你的本意。
用相关联的参数进行更新,比如关联的ID,父表中有一个id,子表中也有一个id,这两个id的值是一样的,这样就可以同时更新了
如果是双字段主键,则连接条件里加多一个字段就行了
建议修改如下试一试:
update a.menu_option set a.menu_option.`option_text`
= (select `option_text` from f.menu_option
where a.menu_option.menu_id = f.menu_option.menu_id and
a.menu_option.id = f.menu_option.id)
where exists ( select 1 from f.menu_option where
a.menu_option.menu_id = f.menu_option.menu_id
and a.menu_option.id = f.menu_option.id)
或者这样写
update a.menu_option, f.menu_option
set a.menu_option.`option_text`=f.menu_option.`option_text`
where a.menu_option.menu_id = f.menu_option.menu_id
and a.menu_option.id = f.menu_option.id