oracle插入或更新某一个指定列来执行触发器

表结构:

create table TZ_GXSX
(
  ID              VARCHAR2(15),
  PROJECT         VARCHAR2(50),
  TXYX            NUMBER(22) default ‘0‘,
  CDATE           DATE,
  RISK            VARCHAR2(10),
  DEGREE          VARCHAR2(10),
  PROB            VARCHAR2(10),
  PRESSURE_LEVEL  VARCHAR2(20),
  NETWORKDIVISION VARCHAR2(20),
  AUTHOR          VARCHAR2(20),
  INP_DATE        DATE
)

直接更新:

create or replace trigger GXSX_trg
  before update ON TZ_GXSX
  FOR EACH ROW

BEGIN
 :new.INP_DATE:=sysdate;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
END GXSX_trg;

排除指定列名"CDATE" 来执行更新:

create or replace trigger GXSX_trg
  before update ON TZ_GXSX
  FOR EACH ROW

BEGIN
 if updating(‘CDATE‘)=false
   then
 :new.INP_DATE:=sysdate;
 end if;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
END GXSX_trg;
时间: 2024-10-14 16:38:55

oracle插入或更新某一个指定列来执行触发器的相关文章

oracle遍历表更新另一个表(一对多)

declare cursor cur_test is select t.txt_desig, m.segment_id, s.code_type_direct, case when s.uom_dist_ver_lower = 'FL' then s.uom_dist_ver_lower || s.val_dist_ver_lower else to_char(s.val_dist_ver_lower) end as val from nvduser11.en_route_rte t right

创建一个指定IP才能执行DDL语句的触发器

create or replace trigger T_sys_config_ddl_refuse_trig before ddl on schema declare v_ipaddress varchar2(20); begin select sys_context('userenv','ip_address') into v_ipaddress from dual; if v_ipaddress <> '192.168.1.21' then raise_application_error(

Oracle存在则更新,不存在则插入应用-merge

转: Oracle存在则更新,不存在则插入应用-merge 2017年01月11日 14:15:26 周星猩 阅读数 11354更多 分类专栏: Oracle 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/hong10086/article/details/54342819 Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts

手动插入更新标致自增列

设置标识列自增开关,然后手动插入指定标识的行.1.首先: SQL code:set identity_insert TB_Menu ON --关闭标识的自增,设置为可手动插入 2.其次:插入你要插入的行并指定标识 3最后: SQL code :set identity_insert TB_Menu OFF -- 打开标识的自增,设置为不可手动插入 手动插入更新标致自增列

Oracle查询优化-插入、更新与删除

--插入.更新与删除 --1.插入新纪录 --1.1.建立测试表 DROP TABLE TEST; CREATE TABLE TEST( C1 VARCHAR2(10) DEFAULT '默认1', C2 VARCHAR2(10) DEFAULT '默认2', C3 VARCHAR2(10) DEFAULT '默认3', C4 DATE DEFAULT SYSDATE ); --1.2.增加数据 INSERT INTO TEST(C1,C2,C3) VALUES(DEFAULT,NULL,'手输

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报ORA-00984列在此处不允许异常. 可以创建TestUser表,如下: create table TestUser ( usercode char(5), username varchar2(20) ) 以下例子请注意第一个字段usercode的值 1.正常例子:usercode为纯数字.可以正常插

mysql ON DUPLICATE KEY UPDATE重复插入时更新

mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name,client_type) SELECT supplier_id,supplier_name,'advertising' FROM suppliers WHERE not exists(select * from clients where clients.c

SQL Server编程必知必会(插入/删除/更新数据,视图) -- (80-85 点总结)

------------------------插入数据------------------------- 80.1. 插入完整的行-- 各个列必须以他们在表定义中出现的次序填充INSERT INTO customersVALUES ('Pep E. LaPew','100 Main Street','LOS Angeles','CA','90046','USA',NULL,NULL) -- INSERT 语句的安全操作方法,指定列, INTO 关键字是可选的INSERT INTO custom

MySQL数据库基础(六)——SQL插入、更新、删除操作

MySQL数据库基础(六)--SQL插入.更新.删除操作 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值. INSERT INTO table_name (column_list) VALUES (value_list); insert into `TSubject` (subjectID,subjectName,BookName,Publisher) values ('0004','英语','大学英语走遍美国','清华出版社')