如果有两张表A,C
A(pid number,uname varchar2)
C(pid number,uname varchar2);
如果我要往C中插入纪录,先在A表中查找,如果在A表中没有重复的uname项,那么插入C表中,如果A表中有这条记录那么,不插入C表!就返回。
请问触发器应该怎么写????
A(pid number,uname varchar2)
C(pid number,uname varchar2);
如果我要往C中插入纪录,先在A表中查找,如果在A表中没有重复的uname项,那么插入C表中,如果A表中有这条记录那么,不插入C表!就返回。
请问触发器应该怎么写????
解决方案 »
- 如何替换所有的空格为一个空格呢?
- 数据库如何提高
- tns不能启动?
- WHERE a.CS_Code>=b.CS_Code(+) 的合理性
- 在连接数据库是出现以下提示:没有发现 Oracle 客户端和网络组件。这些组件由 Oracle 公司提供,是 Oracle 7.3.3版(或更新)客户端软件安装
- exists语句不能用在if then 中间????为什么?
- 数据库链路未处于激活
- 帮帮我吧。。。老大们...
- 请问检索一个表中的数据逐条对其处理,是一次全取出入一个数组里还是一条条next处理哪个快?
- 向各位高手请教一个复杂的sql查询问题?
- 时间转换求助
- 如何获得包和包中的所有参数(包括参数属性,比如游标定义)列表的sql语句。
难道是在C表上用触发器?
如果是的话,触发器执行的sql的时候就是插入数据到C的过程,且触发器不能回滚主事务...好像用触发器不能实现吧...强烈关注!
在视图上创建 Instead Of的触发器, 在该触发器内查找A数据,满足条件则插入C表,否则不操作
方案1:在触发器中检查表A,如果存在则抛出异常,由应用应用程序来处理异常,不执行插入。
方案2:在行触发器中检查表A,如果存在则将记录设置一个标记,再由表的触发器删除有此标记的记录。