ORACLE中的权限设定,建外键,序列,触发器等

原创 2007年09月27日 21:34:00
首先建立了两张表: 
create table car_type_t ( 
   typeid               numeric(20)          not null, 
   typename             varchar(50)          null, 
   constraint PK_CAR_TYPE_T primary key (typeid) 


create table vehicle_t ( 
   vehicleid            numeric(10)          not null, 
   typeid               numeric(20)          null, 
   fueltypeid           numeric(10)          null, 
   vehiclestatusid      numeric(10)          null, 
   vehiclenumber        numeric(10)          null, 
   vehiclelength        float(10)            null, 
   vehiclewidth         float(10)            null, 
   vehiclehigh          float(10)            null, 
   vehiclecolor         varchar(10)          null, 
   solddat              date                 null, 
   manufactcomp         varchar(100)         null, 
   engineid             numeric(20)          null, 
   vehiclephycid        numeric(20)          null, 
   width                float(5)             null, 
   capaweight           float(5)             null, 
   constraint PK_VEHICLE_T primary key (vehicleid) 

创建两张表之间的关联关系: 
     
alter table vehicle_t 
   add constraint FK_VEHICLE_RELATIONS_CARTYPE foreign key (typeid) 
   references car_type_t (typeid) 

然后遇到了一些问题: 
1.首先是我想让ORACLE中表ID自动增加, 
   具体实现: 
首先建立了一个序列 
create sequence cartype_s 
increment by 1 
start with 10000 
nomaxvalue   
nocycle; 

然后再对这个序列建立了触发器 
create or replace trigger car_type_t_trg 
    before insert or update on car_type_t 
    for each row 
    begin 
      select cartype_s.nextval into :new.typeid from dual; 
    end; 
    /在建立出发器的时候遇到了一些问题!就是会报错,"权限不足",于是仔细研究发现:是我建立的该角色没有建触发器的权限:具体建立方法:grant create trigger to vm_user 

这样键好后,insert into car_type_t values(232,'test'); 无论第一个字段是多少,最后查询car_type_t是,字段typeid是不断从10000增加的. 

2.如何在ORACLE中查看表间关系,及外键关联关系: 

  select   *   from   all_constraints   
      where   constraint_type = 'R' 
   and owner = 'CARMEN' 
   
   
   select   *   from   all_cons_columns 
where owner = 'CARMEN' 
and constraint_name = 'PK_CAR_TYPE_T' 
此两行语句就可以查出表中的FK对应的PK,和PK对应的表名称. 

3.删除表的时候需要先删除外键
alter table  VEHICLE_T
   drop constraint FK_VEHICLE_RELATIONS_CARTYPE
   
drop table car_type_t才可以做到
 
4.查询触发器
 Select   *   from   All_Triggers
 where owner='CARMEN'
 
5.删除序列
drop sequence cartype_s
 
 

MySQL建外键简直吓死人error150

最近在做网站,C#+MySQL,然而在建表的时候遇到了一大堆的问题,特别是建外键,呵呵呵,消耗了一上午的时间也没成,一直报err150。上网查资料发现也不是很全,最后看到了一些比较有用的方法对付err...

在power disigner里怎样建外键

在网上查的,方法如下: ①:Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段 ②:在PowerDesigner中,通过建立关系R...

ORACLE 禁用/启用外键和触发器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

ORACLE 禁用/启用外键和触发器

1、ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外键约束。 2、启用外键约束的命令为:alter table t...
  • e_wsq
  • e_wsq
  • 2014年12月03日 23:24
  • 641

oracle创建表,序列,触发器,自动生成唯一主键

数据库oracle和mysql插入数据的区别? mysql数据库主键字段是increament,则插入数据不需要插入主键字段。数据库会自动生成主键 oracle数据库主键字段必须创建序列,则插入数...

Oracle序列和触发器实现表的主键自增

过创建Oracle序列和触发器实现表的主键自增。 首先创建Oracle序列,序列的语法格式为: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WI...

Oracle建表,建序列,建触发器,自动生成唯一主键。dual解释

--根据数据库设计说明书创建表 --GOODS create table goods1 ( gid number(11) primary key, gname varchar2(20) not nul...

oracle 主键自增(序列和触发器)

设置主键: 1、建表时指定primary key: create table test(id number(6) primary key, name varchar2(20) ); 2、如果表已...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE中的权限设定,建外键,序列,触发器等
举报原因:
原因补充:

(最多只允许输入30个字)