`
shixiaomu
  • 浏览: 383029 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle trigger 表名 列名

阅读更多
select 'create or replace trigger ' || t.TABLE_NAME || '_' || t.COLUMN_NAME ||
        '_Update_Insert' || ' after  insert or update of' || '  ' ||
        t.COLUMN_NAME || '  on  ' || t.TABLE_NAME || '  for each row  declare
  -- local variables here
begin
if updating  then 
' || 'insert into historydata (id,RECORDID,TABLENAME,COLNAME,' ||
        decode(t.DATA_TYPE,
               'VARCHAR2',
               'NEWVALUECHAR',
               'NUMBER',
               'NEWVALUENUMBER',
               'TIMESTAMP(6)',
               'NEWVALUEDATE',
               'FLOAT',
               'NEWVALUEFLT') || ' , ' ||
        decode(t.DATA_TYPE,
               'VARCHAR2',
               'OLDVALUECHAR',
               'NUMBER',
               'OLDVALUENUMBER',
               'TIMESTAMP(6)',
               'OLDVALUEDATE',
               'FLOAT',
               'OLDVALUEFLT') || ' , ' ||
        'MODIFIER,MODIFYDATE,OPERATETYPE) values (''2w3e4r5t6y7u8i'',:new.id, ''' ||
        t.TABLE_NAME || ''' , ''' || t.COLUMN_NAME || ''' , ' || ':new.' ||
        t.COLUMN_NAME || ' , ' || ':old.' || t.COLUMN_NAME || ' , ' ||
        ':new.editor,sysdate,''updating'');' || '
          end if; ' || ' if inserting  then 
' || 'insert into historydata (id,RECORDID,TABLENAME,COLNAME,' ||
        decode(t.DATA_TYPE,
               'VARCHAR2',
               'NEWVALUECHAR',
               'NUMBER',
               'NEWVALUENUMBER',
               'TIMESTAMP(6)',
               'NEWVALUEDATE',
               'FLOAT',
               'NEWVALUEFLT') || ' , ' ||
        decode(t.DATA_TYPE,
               'VARCHAR2',
               'OLDVALUECHAR',
               'NUMBER',
               'OLDVALUENUMBER',
               'TIMESTAMP(6)',
               'OLDVALUEDATE',
               'FLOAT',
               'OLDVALUEFLT') || ' , ' ||
        'MODIFIER,MODIFYDATE,OPERATETYPE) values (''2w3e4r5t6y7u8i'',:new.id, ''' ||
        t.TABLE_NAME || ''' , ''' || t.COLUMN_NAME || ''' , ' || ':new.' ||
        t.COLUMN_NAME || ' , ' || ':old.' || t.COLUMN_NAME || ' , ' ||
        ':new.editor,sysdate,''inserting'');' || '
          end if; ' || 'end ' || t.TABLE_NAME || '_' || t.COLUMN_NAME ||
        '_Update_Insert ;'
  from user_tab_columns t
where t.TABLE_NAME in ('AIRPORT')
   and t.COLUMN_NAME != 'ID'




prompt PL/SQL Developer import file
prompt Created on 2009年6月4日 by fox
set feedback off
set define off
prompt Creating HISTORYDATA...
create table HISTORYDATA
(
  ID             VARCHAR2(40),
  RECORDID       VARCHAR2(40),
  TABLENAME      VARCHAR2(100),
  COLNAME        VARCHAR2(100),
  NEWVALUECHAR   VARCHAR2(200),
  OLDVALUECHAR   VARCHAR2(200),
  NEWVALUENUMBER NUMBER(10),
  OLDVALUENUMBER NUMBER(10),
  NEWVALUEDATE   TIMESTAMP(6),
  OLDVALUEDATE   TIMESTAMP(6),
  VALUETYPE      NUMBER,
  OPERATETYPE    NUMBER,
  MODIFIER       VARCHAR2(100),
  MODIFYDATE     TIMESTAMP(6),
  NEWVALUEFLT    FLOAT,
  OLDVALUEFLT    FLOAT
)
;
comment on column HISTORYDATA.VALUETYPE
  is '1-int,2-str,3-date.4-float';
comment on column HISTORYDATA.OPERATETYPE
  is '1-update,2-insert,3-delete';

prompt Loading HISTORYDATA...
prompt Table is empty
set feedback on
set define on
prompt Done.

分享到:
评论

相关推荐

    顶级讲师oracle全部课件,最全文档,涉及oracle所有操作,开发必备

    * 创建触发器:create trigger 触发器名 before/after insert/update/delete on 表名 for each row as $$ begin ... end; 复杂查询 Oracle 的复杂查询提供了强大的查询能力,允许开发者创建复杂的查询语句,例如:...

    oracle自带建表命令

    8. **自增序列**:Oracle不直接支持自增字段,但可以通过序列(SEQUENCE)和触发器(TRIGGER)实现类似功能。序列创建: ``` CREATE SEQUENCE seq_StudentID START WITH 1 INCREMENT BY 1; ``` 9. **索引**...

    oracle数据库主键自动生成

    Oracle 数据库主键自动生成 在 Oracle 数据库中,主键自动生成是指在插入数据时自动生成唯一的主键值,从而简化数据录入和维护工作。下面将详细介绍 Oracle 数据库主键自动生成的实现方法和相关知识点。 序列...

    oracle初学者必知的100个问题

    在Oracle中,可以通过CREATE TABLE语句来创建表,需要指定表名、列名、数据类型以及可能的约束等。 8. 如何在Oracle中插入数据? 通过INSERT语句在Oracle中插入数据。语句的基本格式为INSERT INTO table_name ...

    oracle里的常用命令

    11. **索引**:`CREATE INDEX 索引名 ON 表名 (列名);`为提高查询性能创建索引。`DROP INDEX 索引名;`用于删除索引。 12. **视图**:`CREATE VIEW 视图名 AS SELECT ...;`定义基于查询的虚拟表。视图不存储数据,但...

    MySql 语法

    `CREATE TRIGGER 触发器名 ACTION时机 ON 表名 FOR EACH ROW 触发器体;` 8. **事务处理**: MySQL支持事务的ACID特性,确保数据一致性。`START TRANSACTION;` 开始事务,`COMMIT;` 提交事务,`ROLLBACK;` 回滚事务...

    oracle调优,乱码解决等汇总

    保留字是SQL和PL/SQL中预定义的具有特殊含义的关键字,不能用作表名、列名或其他数据库对象的名称。了解保留字有助于避免命名冲突。 9. **查询Oracle编码集**: 可以使用`SELECT * FROM NLS_DATABASE_PARAMETERS ...

    oracle语法大全

    学习如何正确指定表名、列名和值,以及如何使用子查询进行条件判断是至关重要的。 四、数据删除 DELETE语句用于从表中删除记录,但需谨慎操作,因为它通常不可逆。可以配合WHERE子句指定删除条件,避免误删数据。 ...

    一个oracle客户端(oracle sql handler)

    (2)输入字串“abc”+“.”,如果“abc”是一表名/视图,或其别名,则列出表/视图的所有列名及数据类型;如果“abc”是一用户名,则列出该用户的所有对象;如果“abc”是一包名,则列出包内的过程和函数; (3)...

    Oracle.search

    这是基本的查询结构,其中"列名"是你想要获取的字段,"表名"是数据来源,"条件"则用来过滤结果。 2. **聚合函数**:如COUNT、SUM、AVG、MAX和MIN,它们用于对一组值进行计算,比如计算胃出血病人的总数或平均年龄...

    oracle系统表查询

    这些对象类型包括CLUSTER、DATABASE LINK、FUNCTION、INDEX、LIBRARY、PACKAGE、PACKAGE BODY、PROCEDURE、SEQUENCE、SYNONYM、TABLE、TRIGGER、TYPE、UNDEFINED、VIEW等。 ### 四、表 - **`SELECT * FROM dba_...

    ORACLE-PLSQL及存储过程自学资料

    在PL/SQL中,所有的表名、列名和数据类型都会在编译时进行检查。此外,PL/SQL可以广泛应用于各种Oracle开发工具,如SQL*PLUS,也可以被其他非Oracle开发工具调用。 PL/SQL程序由三个部分构成:声明部分(DECLARE)...

    oracle的sql语句和语法

    可以指定列名、表名、条件等,例如`SELECT column1, column2 FROM table WHERE condition`。 - **INSERT语句**:向表中插入新记录,如`INSERT INTO table (column1, column2) VALUES ('value1', 'value2')`。 - **...

    震撼推出超方便实用的Oracle开发工具 - Oracle SQL Handler,双语界面,智能SQL编辑器,免装Oracle客户端,能运行于Windows, 双语界面

    (2)输入字串“abc”+“.”,如果“abc”是一表名/视图,或其别名,则列出表/视图的所有列名及数据类型 ;如果“abc”是一用户名,则列出该用户的所有对象;如果“abc”是一包名,则列出包内的过程和函数; (3)...

    Oracle.docx

    创建索引如`CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名;`,删除索引使用`DROP INDEX 索引名;`,重建索引则用`ALTER INDEX 索引名 REBUILD;` 序列(Sequence)提供自增的数字序列,通常用于主键生成。...

    Oracle基础知识习题

    使用SELECT语句,可以指定列名、表名、条件等,例如`SELECT column1, column2 FROM table WHERE condition`。 2. 数据插入:INSERT语句用于向表中添加新记录,如`INSERT INTO table (column1, column2) VALUES ...

    数据库ORACLE命名规范(标准版)

    列名则简洁明了,反映列所含数据的意义,如`EMPLOYEE_ID`、`FIRST_NAME`、`LAST_NAME`。 5. **索引命名规范**: - 索引有助于提高查询性能,命名时可以反映其作用,如`IDX_EMPLOYEE_LAST_NAME`表示根据姓氏进行...

    北语19春《Oracle数据库开发》作业1234满分答案.pdf

    4. **更改表名**:在Oracle中,更改表名可以使用`ALTER TABLE`语句配合`RENAME TO`关键字,例如:`ALTER TABLE CUSTOMER RENAME TO CUSTOMER_CHANGE`。正确答案是B。 5. **游标(Cursor)**:在SQL中,游标允许我们...

    Oracle.pdf

    CREATE INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名; ``` 删除索引: ```sql DROP INDEX 索引名; ``` 重建索引: ```sql ALTER INDEX 索引名 REBUILD; ``` 7. Sequence(序列):提供有序的整数序列,通常...

    ORACLE 常見問題

    SELECT text FROM user_source WHERE name = 'TRIGGER_NAME' AND type = 'TRIGGER'; SELECT text FROM user_source WHERE name = 'PROCEDURE_NAME' AND type = 'PROCEDURE'; SELECT text FROM user_source WHERE ...

Global site tag (gtag.js) - Google Analytics