日期:2014-05-16  浏览次数:20506 次

对oracle当中子查询建表,merge操作,创建,修改,删除约束,创建使用触发器的复习练习(一)
/** 对oracle当中子查询建表,merge操作,创建,修改,删除约束,创建使用触发器的复习练习**/
/**  
本例子的作用是熟悉使用oracle当中的触发器:有两张表  productinfo:产品表,productinfo_info:产品推荐表。
其中产品推荐表里面只有部分产品表里面的信息(当然不是所有的产品都推荐),这两张表的字段结构完全一样。
要实现:当管理者修改产品表里面的某个纪录的时候,如果该记录在产品推荐表里面也存在(根据productIdid判断),
则触发器自动修改产品推荐表里面的这条记录以达到跟产品表里面的记录保持一致的效果。
**/

--新建了一个产品信息表
create table productinfo(
productId varchar2(20) unique,
productName varchar2(10) not null,
productPrice varchar2(10) primary key,
productAddress varchar2(10) );

--练习使用sql修改约束和字段大小
alter table productinfo modify 
productAddress varchar2(20) not null;

--练习使用sql删除,修改,新增表里面的约束
alter table productinfo
--drop constraint sys_c009964;(删除的是productPrice为主键的约束)
--modify productPrice  constraint product_price_not  not null;(给productPrice增加非空的约束)
--add constraint productin_address_check check(length(productAddress)>5);(给地址增加check约束)
add constraint productinfo_pk  primary key(productId);--增加productid为主键的约束

--查看所有的约束名字,约束的状态(是否启用) ,约束的类型,约束是建立在哪个列上面的
select c.constraint_name, c.status, c.constraint_type,n.COLUMN_NAME
from user_constr  select * from productinfo_bak ;
aints c, user_cons_columns n
where c.CONSTRAINT_NAME = n.CONSTRAINT_NAME and c.TABLE_NAME= 'PRODUCTINFO';

?