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...

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

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

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

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

Oracle使用sequence(序列)+tirgger(触发器)实现auto_increment(主键自增)

受mysql的影响,在oracle建表的时候差点就控制不住自己的麒麟臂打下auto_increment。不过Oracle提供了一套机制也可以实现自增主键,虽然稍微麻烦点也算是殊途同归。 数据准备-测试...

数据库到底用不用外键、触发器、索引、视图、存储过程

今天听了一个企业技术总监的宣讲,结果听说在他开发系统的过程中,都没有用到外键,这让我很惊讶,赶紧上网搜索了一些资料看了看,终于明白了不用外键的原因。这是一篇关于是否使用外键的讨论,讲的很有道理:对于主...

数据库到底用不用外键、触发器、索引、视图、存储过程

原文转自:http://blog.csdn.net/neusoft_lkz/article/details/4366668 相关讨论:http://www.itpub.net/thread-1313...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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