create or replace trigger 名
before or after DML(Insert ,uodate ,delete)on 表名
begin
执行语句
end;
/
对操作进行日志备份
create or replace trigger 名
before insert on emp
begin
insert into emp_log(user,to_cahr(sysdate,'yyyy-mm-dd hh:mi:ss','insert);
end;
create or replace trigger t_timelimited
after insert or delete or update on emp
declare
v_time varchar2(20);
begin
v_time:=to_char(sysdate,'hh24');
if v_time=19 then
raise_application_error(-20009,'这个时段禁止此操作');
end if;
end;
19时 不能进行 这些操作
create or replace trigger t_emp
before insert or update or delete on emp
begin
if inserting then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'insert');
elsif updating then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'update');
elsif deleting then
insert into emp_log values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'delete');
end if;
end;
EMP表删除 几行 就插入EMP2 几行
create or replace trigger t_new
before delete on emp
for each row
begin
if deleting then
insert into emp2 values (:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
end if;
end;
/
行级触发器 :new.字段名 是 更改后新的内容
:old.字段名 是更改前的内容
要使用 new 和 old 必须先 加上 for each row
old和new 如果执行update 更改前的就是old 更改后的就是new
如果是删除 new 就是 空 如果插入 old 就是空
创建序列
SQL> create sequence s_sstu;
序列已创建。
创建表---------------------------------------------------------------------
SQL> create table stu(
2 id int,
3 name varchar2(20));
创建触发器-----------------------------------------------------------------
create or replace trigger t_stu
before insert on stu
for each row
begin
select s_sstu.nextval into :new.id from dual;
end;
/
插入--------------------------------------------------
insert into stu(name) values('mt');
execute immediate 'sql语句'
begin
execute immediate 'create table emp as select * from emp';
end;
可以执行
分享到:
相关推荐
在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...
可以使用以下SQL语句将Java源代码加载到数据库中: ```sql EXECUTE IMMEDIATE 'CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "MyJavaClass" AS import java.sql.*; public class MyJavaClass { public static...
EXECUTE IMMEDIATE 'SELECT category_id INTO categid FROM category_info WHERE category_name = :new.category'; ``` 通过以上知识点,可以了解到Oracle触发器是一个功能强大且灵活的数据库功能,能够帮助开发者...
10. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,提高了代码的灵活性。 “Oracle PL-SQL语言初级教程.pdf”很可能是这个压缩包的核心内容,它会逐步引导学习者了解上述知识点,并通过...
6. **动态SQL**:使用EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE组合来执行动态构建的SQL语句。 7. **包**:如何创建和使用包来组织相关的PLSQL代码,提高代码复用性和模块化。 总之,PLSQL与Oracle SQL结合使用,...
通过EXECUTE IMMEDIATE语句,我们可以根据程序的需要生成和执行任意的SQL命令。 在Oracle9i PL/SQL程序设计的学习过程中,理解并熟练掌握这些核心概念和技术至关重要。通过深入学习和实践,开发者可以构建出高效、...
7. **动态SQL**:通过EXECUTE IMMEDIATE和DBMS_SQL模块,你可以编写和执行运行时构建的SQL语句,这在处理灵活的数据操作需求时非常有用。 8. **索引和性能优化**:示例可能包括如何利用索引来加速查询,以及如何...
- 动态SQL允许在运行时构建和执行SQL语句,使用EXECUTE IMMEDIATE或PREPARE...EXECUTE...COMMIT/FETCH结构。 8. **事务管理**: - COMMIT提交事务,保存所有更改;ROLLBACK回滚事务,撤销所有更改。 - SAVEPOINT...
- **嵌入式SQL**:PL/SQL可以直接嵌入SQL语句,用于查询、插入、更新和删除数据库中的数据。 - **动态SQL**:通过EXECUTE IMMEDIATE语句执行字符串形式的SQL,适应更灵活的需求。 3. **PL/SQL控制结构** - **...
通过EXECUTE IMMEDIATE动态执行SQL,可以处理更复杂的任务,如运行用户输入的SQL语句。 7. **异常处理**:PL/SQL提供了强大的异常处理机制,允许开发者预定义异常,或者捕获并处理运行时错误,保证程序的健壮性。 ...
9. **动态SQL**:通过EXECUTE IMMEDIATE语句,PL/SQL能够动态地构建和执行SQL语句,增加了灵活性和适应性。 10. **包(PACKAGE)**:包是将相关的过程、函数、变量和常量组合在一起的命名实体,提供了一种组织和...
5. **存储过程和函数**:存储过程是一组PL/SQL语句,可以在数据库中存储并重复调用。函数类似,但返回一个值。它们能提高性能,减少网络通信,并提供封装和模块化。 6. **触发器**:触发器是数据库级别的事件驱动...
11. **动态SQL**:使用EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE组合,能够在运行时构建和执行SQL语句,这对于处理动态数据需求非常有用。 12. **游标变量和 bulk collect**:游标变量可以用于在PL/SQL中传递和...
4. **动态SQL**:探讨如何在PL/SQL中执行SQL语句,包括EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE模式,以及绑定变量的应用。 5. **包(PACKAGE)**:详细解释包的概念,包括公共和私有部分,以及如何通过包来组织...
- 动态SQL允许在运行时构建和执行SQL语句,通过EXECUTE IMMEDIATE和DBMS_SQL包实现。 - 动态SQL提高了灵活性,但也需警惕SQL注入问题。 10. **事务管理** - PL/SQL支持事务的概念,通过COMMIT提交事务,ROLLBACK...
11. **动态SQL**:通过EXECUTE IMMEDIATE语句,可以在运行时构建和执行SQL语句,增强了程序的灵活性。 12. **包规范和体**:包规范定义了包的公共接口,包括过程、函数和变量声明;包体包含了实现这些接口的代码。 ...
9. **游标与动态SQL**:游标(CURSOR)允许逐行处理查询结果,而动态SQL(EXECUTE IMMEDIATE)允许在运行时构建和执行SQL语句,适应变化的需求。 10. **触发器与约束**:触发器(TRIGGER)是自动执行的数据库对象,...
13. **动态SQL**:通过EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE来执行动态构建的SQL语句,适应不同的运行时需求。 14. **游标表达式和并行执行**:利用游标表达式进行高级查询操作,同时了解如何在PL/SQL中实现...
11. **动态SQL**:通过EXECUTE IMMEDIATE语句,PL/SQL可以执行在运行时生成的SQL语句,增强了灵活性。 12. **事务管理**:PL/SQL提供了COMMIT和ROLLBACK语句,用于控制事务的提交和回滚,确保数据一致性。 13. **...