首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django之ORM 外键关联(三)

    ForeignKey ManyToManyField ForeignKey 操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段 示例: 字段查找(跨表) 语法: 关联字段__字段...示例: 反向操作 对象查找 语法: obj.表名_set 示例: 字段查找 语法: 表名__字段 示例: ManyToManyField class RelatedManager "关联管理器..."是在一对多或者多对多的关联上下文中使用的管理器。...它存在于下面两种情况: 外键关联的反向查询 多对多关联 当 . 点后面的对象可能存在多个的时候就可以使用以下的方法。...方法: ① create() 创建一个新的对象,保存对象,并将它添加到关联对象集之中,返回新创建的对象。 ② add() 把指定的 model 对象加到关联对象集中。

    2.9K50

    yashandb:自关联外键插入数据时报错

    自关联外键插入数据时报错:YAS-02033 foreign key constraint violated parent key not found问题现象使用如下的 sql 语句创建自关联外键表:然后使用如下语句...,尝试插入两行数据,这两行数据汇总起来,是符合外键关联关系的:insert into self_f_key select 1.2 from dual union all select 2.1 from...dual;但是 yashandb 插入失败:问题的风险及影响影响正常的业务处理流程,同样的建表语句,同样的 insert,可以在 oracle 中正常执行:问题影响的版本所有的 yashandb 版本问题发生原因目前...yashandb 在处理此种情况下的完整性约束判断时,没有在事务级进行统一判断,而是使用了类似于一行一行的判断逻辑,所以在事务级看来没有违反完整性约束的数据无法插入解决方法及规避方式规避方法:禁用外键约束问题分析和处理过程根据现网的问题场景...,构造可以同时在 yashandb/oracle 执行的 sql 语句,比较并确认双方的表现差异yashandb 对于此种情况下完整性约束的判断核心在 idxCheckKeyExist 方法中经验总结构造可以同时在

    44000

    第三篇 外键维表的关联:SPL轻量级文件存储提速查询实践

    关联的一种情况是外键关联。一个表的普通字段(外键)和另一个表的主键关联。比如订单表与客户表、运货商表都是外键关联。外键在关联表中是主键,具有唯一性,SPL 把外键理解成一个对象。...要注意,这里说的是逻辑上的主键,是在表中取值唯一的字段,不一定是在物理表上建立的 primary key。外键也不一定是物理上的 foreign key。另一种关联是主键关联。...下面,我们以订单表、客户表、城市表、州表和运货商表为例,介绍 esProc SPL 外置数据提速外键关联的方法。...还要完成预关联,预先把外键用 run 转换成对应维表的记录,比如 A6:序表 customer 的普通字段 city_id 被转换为 city 表的记录。...的订单,按客户所在州分组统计运货费。结果要包括州名称。2、思考:在自己熟悉的数据库中有没有通过外键关联的多个表?是否可以用序号关联的方法来提速?

    40210

    深入mysql外键关联问题的详解--Java学习网

    今儿继续再看老师给推荐的深入浅出mysql数据库开发这本书,看到innodb数据库的外键关联问题时,遇到了一个问题,书上写的是可以对父表进行修改,从而同步到子表的外键上去,可是自己的实验却是没有能够。...然后自己又重新看了下书本,发现自己的sql语句中没有innodb的外键约束方式(cascade,set null,no action,restrict),感觉这就是自己出问题的地方。...可是怎么加入关联方式呢,上网找了好半天也没有合适的方法。就自己找呗,就通过老师说的方法,?...网上的说法是:字段类型和外键的索引 这里是重新建立一张表icity,结果可以了,总结可能是因为字段类型的问题,可是我的alter的问题还是没有解决呢: 代码如下: mysql> create...,做法先drop掉表里的外键,然后在add。

    1.6K40

    mysql如何添加一个表的外键

    1:创建一个父表,主键作为子表的外键: 1 create table province( 2 pId int primary key auto_increment, 3 pName varchar...(20) 4 ); 2:创建子表,外键是父表的主键: 1 create table user( 2 userId int primary key auto_increment, 3 userName varchar...(40), 4 pid int, 5 foreign key(pid) references province(pId) 6 ); 给一张表添加外键,即给子表的外键添加主键的规则: 在子表声明一个字段pid...int,用于作为子表的外键,foreign key(子表的外键字段) references 父表的表名(父表的主键的字段名); 3:当创建好数据表时添加外键约束: alter table user add...foreign key(pid) references province(pId); alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称

    6.7K70

    oracle建表、建主键、外键基本语法

    主键:唯一标识,不能为空,加快查询速度,自动创建索引 外键:约束内表的数据的更新,从定义外键时可以发现 外键是和主键表联系,数据类型要统一,长度(存储大小)要统一。...这样在更新数据的时候会保持一致性 -创建表格语法: create table 表名( 字段名1 字段类型(长度) 是否为空, 字段名2 字段类型 是否为空...); -增加主键 alter table 表名 add constraint 主键名 primary key (字段名1); -增加外键: alter table 表名...add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2); 在建立表格时就指定主键和外键 create table...varchar2(8) not null, constraint PK_T_STU primary key (STU_ID) ); 主键和外键一起建立

    4.5K50

    django模型中有外键关系的表删除相关设置

    0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...:作者删除详情删除,详情删除作者保留 2)作者找详情用 外键related_name(detail),详情找作者用 外键字段(author) 3)db_constraint断开表关联,on_delete...(多的一方):出版社删除书外键不动,书删除没有任何影响 2)出版社找书用 外键related_name(books),书找出版社 外键字段(publish) 3)db_constraint断开表关联...,关联的相关内容不会删除 models.CASCAD关联表内容删了,关联的相关内容会删除 db_constraint关系断开后,但是不影响联表查询 四.多对多关系 例如Book、Author两表 authors...2)正向找 外键字段,反向找 外键字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联)

    5.2K20

    MySQ-表关系-外键-修改表结构-复制表-03

    外键 foreign key 确定外键字段归属方 修改表 修改表名 增加字段 删除字段 修改字段 复制表 复制表结构+记录 利用条件实现仅复制表结构 今日数据库操作语句 创建数据库 拆分员工与部门信息成两张表...多对多的关系,必须额外创建第三张表,用来专门记录两种表之间的关联关系 如果按一对一的思路来,两张表都必须关联对方,都必须让对方先建立,那就建不了表了,外键存的是关联关系,那就单独开一张表,存关联关系 案例建立...外键 foreign key 在MySQL中通过外键来建立表与表之间的硬性关系 通常将关系字段称之为外键字段 确定外键字段归属方 一对多的外键字段,应该建在“多”的那一方 多对多的外键字段建在额外的第三张表上...一对一的外键字段建在任意一方都行,但推荐建在查询频率较高的一方(外键字段必须保证唯一性) 有外键关系的注意点 在创建表的时候,必须先创建被关联表 插入数据的时候也应该先插入被关联数据 级联更新,级联删除...注意外键的逗号,(逗号代表一个字段的结束)(还是不要忘了建表的字段定义那块最后一个语句不要加 , 逗号) 外键虽然能够帮你强制建立表关系,但也会给两行表之间增加数据相关的约束 ?

    1.8K30

    外键的设置

    一、外键的使用条件: ① 两个表必须是InnoDB表,MyISAM表暂时不支持外键 #查看表类型 SHOW TABLE STATUS #查询结果的Engine字段下,一般默认InnoDB类型 ②...test2创建test的索引,在test2下执行,test2为从,test为主 这一步也是博主自己刚开始研究是碰到的最大的坑, 外键引用一直选不了对应字段,可能是你没有设置索引 ③ 外键关系的两个表的列必须是数据类型相似...对父表(表1)的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句...,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)NO ACTION啥也不做 四、外键约束使用最多的两种情况: 场景关键字选择①父表更新时子表也更新,父表删除时如果子表有匹配的项....html 2、两表关联更新操作: https://blog.csdn.net/qq_35866846/article/details/102798941

    4.5K30

    mysql的外键

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。...外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引...,但如果在较早的版本则需要显示建立; 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联...,保证数据的一致性和实现一些级联操作; 外键的定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)...ON DELETE、ON UPDATE表示事件触发限制,可设参数: RESTRICT(限制外表中的外键改动) CASCADE(跟随外键改动) SET NULL(设空值) SET DEFAULT(设默认值

    8.9K70

    Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

    外键和表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个外键,记录着对应的作者的主键。...如果一个模型使用了外键。...即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。 3.SET_NULL:设置为空。如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空。...如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。 5.SET():如果外键的那条数据被删除了。

    7.4K30

    外键约束

    外键约束 foreign key 外键约束的要求: 父表和字表必须使用相同的存储引擎,禁止使用临时表; 数据库引擎只能是InnoDB; 外键列和参照列必须具有相似的数据类型,数字的长度或者是否有符号必须一样...)用户表三个字段 id (主键) 用户名称 省份编号(外键对应省表的主键id类型一样,因为需要把这个设置为外键约束) ------------------- 字表通过省份编号去在父表中查询省份名称; -...----------- 如果要创建外键约束,那么在父表最后加上一句 foreign key (省份编号字段) references 省份表 (省份id); 这样就创建一个外键约束, 上面两个表,也就是说用户表中的省份标号是外键...,相当于省份表 中的id,那么用户表的省份编号与省份表的id字段类型必须一样; ------------- 添加外键的语法 ALTER TABLE tbl_name ADD [CONSTRAINT...); ---------- 外键约束的参照操作:也据说说父表与字表建立了关联或者约束,这个时候父表进行操作的时候,子表也可以设置相应操作; cascade;从父表删除的时候,字表相应字段删除 Set

    3.7K90
    领券