数据库外键参数说明

CREATE TABLE branches.branch
(
branch_id uuid NOT NULL, -- 门店ID
city character varying(32) NOT NULL, -- 所在城市
name character varying(64) NOT NULL, -- 店名
bussiness_policy_id uuid ,

CONSTRAINT pk_branch PRIMARY KEY (branch_id),
CONSTRAINT fk_meta_bussiness_policy FOREIGN KEY (bussiness_policy_id)
REFERENCES meta.bussiness_policy (policy_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_meta_city FOREIGN KEY (city)
REFERENCES meta.city (city) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT uk_branch_name UNIQUE (name)
)

外键参数:

update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:

on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除

时间: 05-26

数据库外键参数说明的相关文章

开源进销存PSI - 数据库外键

今天在PSI的QQ群中聊起了数据库外键的话题,我就写这篇博文,说说我对数据库外键的一些考虑. 1.数据库设计中应该使用外键. 2.很杯具,PSI的数据库设计到目前为止,没有使用外键. 3.PSI会逐步把数据库外键给补上. 4.有些地方还真没法加上外键.举现在的例子: 4.1 t_warehouse_org中的org_id字段,即可以存储 t_org的id,又可以存储t_user的id,这个时候,外键就没法加了. 4.2 t_inventory_detail中的ref_number字段,可以存储多

[转载]数据库外键的使用

[转载]数据库外键的使用 外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触

第二百八十节,MySQL数据库-外键链表之一对多

MySQL数据库-外键链表之一对多 外键链表之一对多 外键链表:就是a表通过外键连接b表的主键,建立链表关系 一对多:就是b表的某一个字段值对应a表外键里的多个值,前提是a表要与b表链表

SSH框架之Hibernate数据库外键如何插入值的问题

SSH框架之Hibernate数据库外键如何插入值的问题 一.目标: 现有表: 其中Tea_id属于外键,如何向含有外键的表中插入对应的数据. 二.pojos部分 Course_information .java package com.pojos; import java.util.Date; public class Course_information { private Integer Course_id; private String Course_name; private Inte

数据库外键的使用

外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据. 使两张表形成关联,外键只能引用外表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键). 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触发限制: on delet

数据库外键使用

数据库到底用不用外键.触发器.索引.视图.存储过程 收藏 今天听了一个企业技术总监的宣讲,结果听说在他开发系统的过程中,都没有用到外键,这让我很惊讶,赶紧上网搜索了一些资料看了看,终于明白了不用外键的原因. 这是一篇关于是否使用外键的讨论,讲的很有道理: 对于主/外键/索引来说,在一些开发团队中被认为是处理数据库关系的利器,也被某些开发团队认为是处理某些具体业务的魔鬼,您的观点呢?在实际应用中您会采取哪种方式? 大家共同观点:主键和索引是不可少的,不仅可以优化数据检索速度,开发人员还省不其它的工

深刻理解数据库外键含义

上课的时候老师讲的很清楚,但是毕竟没有实际操作数据库,思考和实践真的完全是不同层次的. 我的读者表里面全是学生这一类,外键约束使得学生这一类别在类别表中无法删除,就是因为读者表中的学生这一类在约束,试想没有学生这一类,那么读者表里面的学生类别怎么办呢?所以必须得先把读者表里面的学生全删没了,才能从类别表中去掉学生这一类.

SqlServer数据库外键的困惑

在设计数据库和备份数据的时候是否使用外键一直很纠结.先说一下外键的优缺点吧 优点:保证数据的完整性和一致性和可靠性,能做到一次修改所有使用外键的数据对应的信息都改变的作用 缺点:数据表增多,增加开发难度.降低(Insert.Update.Delete)速度 取代外键的方法:触发器.程序 订单一般是我们设计最多的数据了.下面以订单举个类子 订单一般会有客户.订单状态.产品.供应商等信息. 这些属性都有外键以及各自的描述信息,如果订单上只存在有这些信息的外键.会有以下几个问题. 1. 查询/新增/修

jango 模型管理数据model,数据库外键主键与一对一,一对多,多对多关系

四.models.py 定义和管理模型: 4.1模型class的属性就映射与数据库的字段参数 继承models.Model class TestClass(models.Model): 4.2在数据库生成数据表: #django默认在makemigrations会为表对象创建主键id,id = models.AutoField(primary_key=True) 你也可以自定义一个主键对象: 4.2.1: 生成迁移文件python manage.py makemigrations 4.2.2执行