oracle 建表创建外键

1、默认的创建方式
在删除被参照的数据时,将无法删除。

Sql代码  

  1. CREATE TABLE T_INVOICE
  2. (ID NUMBER(10) NOT NULL,
  3. INVOICE_NO VARCHAR2(30) NOT NULL,
  4. CONSTRAINT PK_INVOICE_ID PRIMARY KEY(ID));
  5. CREATE TABLE T_INVOICE_DETAIL
  6. (ID NUMBER(10) NOT NULL,
  7. AMOUNT NUMBER(10,3),
  8. PIECE NUMBER(10),
  9. INVOICE_ID NUMBER(10),
  10. CONSTRAINT PK_DETAIL_ID PRIMARY KEY(ID));
  11. ALTER TABLE T_INVOICE_DETAIL
  12. ADD CONSTRAINT FK_INVOICE_ID
  13. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID);

2、级联删除

外键语法有个选项可以指定级联删除特征。这个特征仅作用于父表的删除语句。使用这个选项,父表的一个删除操作将会自动删除所有相关的子表记录

Sql代码  

  1. ALTER TABLE T_INVOICE_DETAIL
  2. ADD CONSTRAINT FK_INVOICE_ID
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
  4. ON DELETE CASCADE;

如果不能级联删除,可设置子表外键字段值为null,使用on delete set null语句(外键字段不能设置not null约束).

Sql代码  

  1. ALTER TABLE T_INVOICE_DETAIL
  2. ADD CONSTRAINT FK_INVOICE_ID
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
  4. ON DELETE SET NULL;

三、参照字段语法结构

创建外键约束是,外键字段参照父表的主键或Unique约束字段。这种情况下可以不指定外键参照字段名,如下:

Sql代码  

  1. ALTER TABLE T_INVOICE_DETAIL
  2. ADD CONSTRAINT FK_INVOICE_ID
  3. FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE;

当没有指定参照字段时,默认参照字段是父表的主键。

如果外键字段参照的是Unique而非Primary Key字段,必须在add constraint语句中指定字段名。

时间: 2024-08-29 06:55:14

oracle 建表创建外键的相关文章

Oracle建表,建主键,自增

--建表 create table Test( id number(4) not null primary key, name varchar2(25) ) --序列 create sequence Test_sequence increment by 1--每次增加几个 start with 1  --从1开始计数 minvalue 1 nomaxvalue    --不设置最大值 nocycle       --一直累加,不循环 nocache       --不建缓冲区 --触发器 cre

oracle sql 创建表格 oracle建表设置主键自增

1.新建table CREATE TABLE ysb_log( id number(8) primary key not null , tbdate varchar(50) NULL, tb_time varchar(50) NOT NULL, tblog varchar(500) NOT NULL, tbreor varchar2(20) null, bs varchar(50) NOT NULL ); 在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按

oracle建表的时候同时创建主键,外键,注释,约束,索引

--主键create table emp (id number constraint id_pr primary key ,name1 varchar(8));create table emp9 (id number ,name1 varchar(8) ,constraint aba_pr primary key(id,name1));--外键create table emp1(id number references emp(id),name varchar(8)); --复合外键create

oracle主从表主外键对应关系

一.首先让我们来了解下什么是主外键? 1.主键:唯一标识数据表中的某一行 1) 一个表中只能有一个主键.如果在其他字段上建立主键,则原来的主键就会取消.在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键. 2)主键的值不可重复,也不可为空(NULL).主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义. 3)主键的创建:在建置新表格时设定主键的方式 MySQL:  CREATE TABLE Customer (SID integer,La

ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ? #配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg_proj', 'USER': 'root', 'PASSWORD': '123', } } """ 在任何(根或者

java 操作oracle 建表,更新记录

1.  建立表的类 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.PreparedStatement; public class lx01{ public static void main(String[] args) throws SQLException, ClassNotFoundE

Oracle 建表常用数据类型的详解

创建表时,必须为表的各个列指定数据类型.如果实际的数据与该列的数据类型不相匹配,则数据库会拒绝保存.如为学生指定出生日期为"1980-13-31". 在Oracle中,常见的数据类型有: 字符串:字符串分为定长类型char和变长类型varchar2. 数字:整数 number(整数位),小数 number(总长度,小数位),只写number,表示无限制. 日期:date类型,可以保存年月日时分秒. 问题:Oracle中为什么字符串类型为varchar2,它与varchar有什么关系?

Oracle 获取表的主键、外键以及唯一约束条件

Oracle 获取表的主键.外键以及唯一约束条件 Select a.Owner 主键拥有者, a.table_name 主键表, b.Column_Name 主键列, b.Constraint_Name 主键名 From user_Constraints a, user_Cons_Columns b Where a.Constraint_Type = 'P' --P-主键:R-外键:U-唯一约束 and a.Constraint_Name = b.Constraint_Name And a.Ow

sql server2008如何创建外键

以前创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的. 建外键的前提是此外键必须是另外一个表的主键.建外键的步骤: 第一步打开要建外键表的设计器,右击选择“关系”. 然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮, 就会弹出另外一个窗体让我们选择主键表和列,选好之后点击确定. 然后我们展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”.“级联”.“设置为NULL”.“设