oracle创建触发器学习记录
来源:互联网 发布:淘宝上买电动车可靠吗 编辑:程序博客网 时间:2024/06/08 15:47
前提:学生表S,课程表C和学生选课表SC在sys用户下,字段如下:
create table S_RZ0122 (
Sno varchar2(11) primary key,
Sname varchar2(20) not null,
Ssex varchar(2) not null ,
Sage number(2) not null,
Sdept varchar(20) not null
)
create table C_RZ0122(
Cno varchar2(20) primary key,
Cname varchar2(20) not null ,
Ccredit number(2) not null
)
create table SC_RZ0122(
Sno varchar2(11) not null,
Cno varchar2(20) not null,
Score number(3) ,
primary key(Sno ,Cno),
foreign key(Sno) references S_RZ0122(Sno),
foreign key(Cno) references C_RZ0122(Cno)
)
在JXGL数据库中创建一触发器,保证 S 表中学生的年龄在 8-45 岁之间。
触发器说明:(触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。)
首次创建出错:错误在下面,因为SYS用户所属的表中不能创建触发器,所以先复制了一份表到SYSTEM用户中,
再创建触发器
测试:
(4) 在 JXGL 数据库中创建一触发器,当有学生选了某门课时,不能从 C 表中删除
同样的,先复制C课程表
再复制学生选课表:
创建触发器:
测试:成功
实验错误分析记录:
整个实验做下来困难重重啊!因为这些平时使用的不是很多,所以用起来很生疏,特别是触发器的使用的更少,这还是从头开始学了。Oracle也挺烦的,这么麻烦。以下是遇见的部分错误与感受,重要的都记下了,方便以后查看。
3、创建触发器报错:
解决办法:再复制一份表到其他的用户下面,比如system
后来就可以了。。。
4、创建触发器2:报错不能有子查询
解决办法:统计SC学生选课表中该门课程的选课数目,如果选课数目大于0说明有学生选了,则不能删除
于是新问题来了,看样子要把学生选课表也复制进来???
结果成了,真想去屎,,,这说明触发器创建的时候也不能穿透用户关系啊!别看平时查询加上用户名前缀就行。。。
- oracle创建触发器学习记录
- mysql 创建触发器 记录
- oracle 创建触发器
- Oracle创建触发器
- Oracle创建触发器
- Oracle创建触发器
- Oracle创建触发器
- oracle 创建触发器详解
- oracle 创建触发器
- oracle 创建触发器
- ORACLE触发器详细创建
- oracle创建递增触发器
- oracle创建触发器
- Oracle创建触发器
- oracle创建视图触发器
- Oracle创建触发器
- Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器
- mysql学习记录:触发器
- OnMeasure()有啥用?
- 游标
- Eclipse Debug挑错技巧
- UVA 11168 Airport
- 找出1000以内的所有完数。
- oracle创建触发器学习记录
- Eclipse Debug不为人知的秘密
- The Zen of Python
- 第一个服务器程序
- 内存区划分;内存分配;堆、栈概念分析;动态内存管理数据结构及程序样例;核心态与用户态
- Windows硬盘安装Ubuntu双系统及Android开发环境搭建
- light 1144 spoj 4168
- DB2中的空值和NULL值处理
- dwr防止注册用户重复,并防止表单提交