社区
MySQL
帖子详情
给表列加外键
nianzhang747
2009-08-05 11:34:09
首先我用的是InnoDB
其次为给要加外键的列设置了index
最后出现
can't add or update a child row,a foreign key constrant faild(...);
当我给这个列修改字符集编码的时候也报错。
我只不过更改了该列的类型 原来是varchar
现在改成int了就出现上述错误。
...全文
115
6
打赏
收藏
给表列加外键
首先我用的是InnoDB 其次为给要加外键的列设置了index 最后出现 can't add or update a child row,a foreign key constrant faild(...); 当我给这个列修改字符集编码的时候也报错。 我只不过更改了该列的类型 原来是varchar 现在改成int了就出现上述错误。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nianzhang747
2009-08-05
打赏
举报
回复
其实是一致的 都是int 类型的 就是我这个表里有一条数据。把数据删除了 就能加上外键了是为什么啊
vinsonshen
2009-08-05
打赏
举报
回复
不一致的话,外键是不允许的哦
vinsonshen
2009-08-05
打赏
举报
回复
你要建立外键的列及相关联的列的数据类型及长度一致的?
nianzhang747
2009-08-05
打赏
举报
回复
明白了啊 谢谢了
lilinew
2009-08-05
打赏
举报
回复
int 看位数 小数点后面几位
还要看sign unsigned
看是否为null
vinsonshen
2009-08-05
打赏
举报
回复
因为对应数据不在2个表同时存在啊
一个表的外键值一定要在另一个表里存在记录啊
使用Visio进行数据库设计.doc
"使用Visio进行数据库设计 " 内容提纲: 1、数据库模型的定义 2、VISIO中数据库模型的分类 3、建立逻辑模型 4、建立物理模型 5、Sql Server导入数据到Visio "VISIO提供了强大的数据库建模功能,利用VISIO可以很方便的建立各种数 " "据库。 " 1、数据库模型的定义 数据库模型是数据存储方式的简化表示法。它隐藏了对于理解所存储数据的基本相互 关系毫无用处的特定存储细节,但突出表现了数据项之间主要逻辑关系的本质。 "返回页首 " " " "[pi" " "c] " 2、VISIO中数据库模型的分类 在VISIO里数据库模型主要分为三种:: 1.概念模型 概念数据库模型图描述了组织的事实、业务规则和信息需求。它们隐藏了对于理解所 存储数据的基本相互关系毫无用处的特定存储细节。您可以使用"ORM 源模型"模板来创建概念数据库模型。 因为概念数据库模型图不直接映射到物理数据库,所以根据概念模型生成关系数据库 架构之前,您必须使用 Visio 将概念模型图映射到逻辑模型图。为此,应将源模型添
加
到"数据库模型图"绘图项目中 并创建项目。所得到的逻辑模型可以用于生成关系数据库架构。 "注意:如要了解创建概念模型的更多知识,请参看 Visio 联机帮助。 " 2.逻辑模型 逻辑数据库模型图描述了由关系或对象关系数据库系统所支持的数据。该描述包括关 系表以及在这些表的表内和表间所应用的约束。您可以使用关系和 IDEF1X 表示法创建逻辑数据库模型。 使用"数据库模型图"模板或"ER 源模型"模板创建逻辑数据库模型 我们这里重点介绍用"数据库模型图"模板来建立逻辑模型 3.物理模型 实际的数据库,在VISIO中可以根据逻辑模型自动生成各种类型的数据库 "返回页首 " " " "[pi" " "c] " 3、建立逻辑模型 1.打开VISIO.选择"新建"—>"数据库"—>"数据库模型图" 2.建立逻辑表 将"实体"从左边拖到右边空白区(实体就是数据库中的表),输入表名:Class(班 级),保持默认的设置 图 1 3.建立列 在图1中选择"列",给步骤2中建立的表Class建立列(ClassName,StudentCount,Te acherName),其中ClassName为主键(PK),TeacherName是必需的。 图2 4.在图2 中单击"编辑"修改指定列的属性 图 3 在图3中可以修改列的属性,如数据类型,检查(约束)等等.这里我们给StudentCoun t列(字段)
加
上一个">0"的约束 图 4 其中"显示Check子句代码"中可以直接输入SQL语句 建议不要选择"键入是同步名称" 5.建立索引 在图2 中选择"索引",单击"新建"按钮,输入索引的名称,选择"索引类型"及"索引列".这里我 们给列"TeacherName"建立一个唯一索引 图 5 6.建立触发器 在图2 中选择"触发器",单击"添
加
"按钮。建立触发器 7.建立表"Student",包括列"StudentID","StudentName","ClassName","Studen tID为主键","StudentName"有唯一索引,方法如步骤2-5 图6 8.在表Class和Student之间建立
外键
将"关系"从左边拖到右边空白区,实心箭头放在主表Class表上,另一头放在从 表Student表上,VISIO会自动在主表和从表选择相关的字段。 图 7 "返回页首 " " " "[pi" " "c] " 4、建立物理模型 将刚才建立的逻辑模型生成实际的数据库(这里介绍如何生成MS Sql server,其他类型的数据库见VISIO的联机文档) 1.单击"数据库"—>"生成" 图1 2.选择"生成新数据库",然后选择Visio驱动程序(选择SqlServer),如果数据库已经 存在就选择"数据库已存在",否则选择"创建数据库"。 3.单击完成 "返回页首 " " " "[pi" " "c] " 5、Sql Server导入数据到Visio 反向工程是指将已经存在的物理数据库转换成VISIO中的逻辑模型 VISIO中可以反向各种类型的数据库,这里介绍MS Sql Server 1.单击"数据库"—>"反向工程" 2.选择"VISIO驱动程序"和"数据源",如果数据源不存在可以新建 3.单击下一步,输入用户名和密码。选择"反向工程类型" 4.单击下一步。完成反向工程 "返回页首 " " " "[pi" " "c] " ----------------------- 使用Visio进行数据库设计全文共9页,当前为第1页。 使用Visio进行数据库设计全文共9页,当前为第2页。 使用Visio进行数据库设计全文共9页,当前为第3页。 使用Vi
Oracle表中添
加
外键
约束
添
加
主键约束:ALTER TABLE GA_AIRLINE ADD CONSTRAINT PK_AIRLINE_ID PRIMARY KEY(AIRLINE_ID); 有三种形式的
外键
约束:1、普通
外键
约束(如果存在子表引用父表主键,则无法删除父表记录)2、级联
外键
约束(可删除存在引用的父表记录,而且同时把所有有引用的子表记录也删除)3、置空
外键
约束(可删除存在引用的父表记录,同时将子表中引用该父...
oracle添
加
外键
约束的两种方式
创建
外键
前,主表 必须是已经创建好的。
外键
数据增
加
或删除受主表数据的影响。一直没记住。。。 1.创建表同时创建
外键
约束 --当一个表需要创建
外键
时,说明这个表必然与某个表存在一对多的关系,且需要创建
外键
的表为“多”代表的表,即从表 create table t_a1( a_id NUMBER(32) primary key, --主键约束 a1 VARCHAR2(16) not n...
数据库基础 day-02
外键
添
加
,子查询,表连接,交叉连接,限定行数查询,分组查询,视图,增删改,去重
子查询 -- 第二部分:子查询。查询中嵌套查询。 -- 1.相等性子查询,子查询只能查询一行一列,
加
not也只能是一行一列。支持比较运算符 -- SELECT * FROM t_student WHERE id = (SELECT id FROM t_student WHERE `name` = '张家') -- SELECT * FROM t_student WHERE NOT -id = (SELECT id FROM t_student WHERE `name` = '张家') -- SELECT *
【MySQL技术内幕】39-
外键
和锁
外键
主要用于引用完整性的约束检查。在 InnoDB存储引擎中,对于一个
外键
列,如果没有显式地对这个列
加
索引, InnoDB存储引擎自动对其
加
一个索引,因为这样可以避免表锁——这比 Oracle数据库做得好, Oracle数据库不会自动添
加
索引,用户必须自已手动添
加
,这也导致了 Oracle数据库中可能产生死锁。 对于
外键
值的插入或更新,首先需要查询父表中的记录,即 SELECT父表。但是对于父表的...
MySQL
57,063
社区成员
56,759
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章