首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle触发器create with case语句

Oracle触发器是一种数据库对象,它是由一个或多个SQL语句组成的,可以在数据库表上自动执行的程序。触发器可以在特定的数据库操作(如INSERT、UPDATE、DELETE)之前或之后触发执行。它们通常用于实现业务规则和数据完整性方面的逻辑。

CREATE TRIGGER语句用于在Oracle数据库中创建触发器。触发器可以使用CASE语句来实现条件逻辑。CASE语句用于根据满足特定条件的不同情况执行不同的操作。

触发器的创建语法如下:

代码语言:txt
复制
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}]
[OF column_name]
ON table_name
[REFERENCING OLD AS old NEW AS new]
[FOR EACH ROW]
[WHEN (condition)]
[ENABLE / DISABLE]
trigger_body

其中,trigger_name为触发器的名称,可以自定义;BEFORE、AFTER和INSTEAD OF表示触发时机;INSERT、UPDATE和DELETE表示触发的数据库操作;column_name表示触发操作的特定列;table_name表示触发器所属的表名;REFERENCING子句用于在触发器中引用新旧值;FOR EACH ROW表示对每一行执行触发器;WHEN子句用于指定触发器执行的条件;ENABLE / DISABLE用于启用或禁用触发器;trigger_body为触发器的具体逻辑。

使用CASE语句创建触发器的例子如下:

代码语言:txt
复制
CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
  CASE
    WHEN :new.column1 = 'value1' THEN
      -- 执行操作1
    WHEN :new.column2 = 'value2' THEN
      -- 执行操作2
    ELSE
      -- 执行默认操作
  END CASE;
END;

在这个例子中,my_trigger是触发器的名称,BEFORE INSERT表示在插入操作之前触发,FOR EACH ROW表示对每一行执行触发器。触发器的主体逻辑中使用了CASE语句,根据:new.column1和:new.column2的值执行不同的操作。

对于推荐的腾讯云相关产品,根据本题要求,我们不提及具体品牌商。你可以参考腾讯云官方文档或咨询腾讯云的技术支持来获取相关产品信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ORACLE语句触发器的实现

Oracle 语句触发器的实现 语句触发器,顾名思义,就是针对一条DML语句而引起的触发器执行,在语句触发器中不使用for each row子句,也就是说无论数据操作影响多少行,触发器都只会执行一次...创建测试表 create table test_dml( rec_id int, rec_test varchar2(20), rec_test1 varchar2(20) ); create table...test_trigger ( options varchar2(30), times date ); 创建一个触发器 CREATE OR REPLACE TRIGGER TRI_TEST BEFORE...VAR_TAG, SYSDATE); END TRI_TEST; 往表中分别插入、修改、删除数据 INSERT INTO TEST_DML (REC_ID, REC_TEST) VALUES (1, '插入一条语句...TRI_TEST的测试表 select * from TEST_TRIGGER t; 已经记录了三条DML语句 对于条件我们还可以判断其中特定的列是否被更新 现在我们修改触发器 CREATE OR

53610

SystemVerilog-决策语句-case语句

SystemVerilog有两个主要的决策语句:if…else语句case语句,使用关键字casecase…inside,casex和casez。...介绍 case语句提供了一种简洁的方式来表示一系列决策选择。例如: SystemVerilog case语句与C switch语句类似,但有重要区别。...SystemVerilog不能使用break语句(C使用break从switch语句的分支退出)。case语句在执行分支后自动退出(使用break退出case语句是非法的。)...,不能执行break语句。 SystemVerilog有4种不同的case语句,关键字为casecase…inside casex和casez。这些不同case语句的一般语法和用法是相同的。...case表达式后面跟一个冒号,如果case表达式与case项匹配,后续执行是可以是一条语句或者begin-end包含的系列语句。 默认case项。可以使用default关键字指定可选的默认case项。

3.4K20
  • (33)if、case语句

    1.单分支if条件语句 格式: if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 单分支条件语句需要注意几个点 ①if语句使用fi...fi 4.case语句 case语句和if…elif…else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。...格式: case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ...省略其他分支.../bin/bash #Author: yuzai read -p "Please choose yes/no: " -t 30 cho case $cho in "yes")...choose "2"' echo 'If you want to xuzhou,please choose "3"' read -t 30 -p "please input your choice:" cho case

    1.2K51

    CASE语句CASE表达式

    本文将描述case语句case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。...语句与搜索式case语句的异同 --相同点:两者都用于根据不同的条件,来执行与之对应的语句或完成特定的任务,甚至某些情况下可以互换替换。...分析如下: --Case表达式,那么when 之后接的一定是表达式或一个特定值。 --Case语句,那么when之后接的特定一个语句,或函数,或计算表达式。既然是语句则一定带有分号。...--最后一点区别是case以end结束,而case语句则是以case end结束。...五、case嵌套 --case的嵌套就是case语句和表达式中嵌套case语句与表达式,理解了case的用法,case嵌套并不难。

    1.3K20

    oracle触发器报错语法,Oracle 触发器

    7、when 表示触发器语句触发的条件 行级触发器 行级触发器一般用来做数据的校验或者记录数据的操作日志,下面是一个行级触发器的例子: 案例1、利用行级触发器记录更新学生信息表时的操作记录,代码如下:create...* from oplog; 结果如下: 语句触发器 语句触发器一般是用来做特定限制语句操作的作用,比如在某一段时间内禁止某一部分语句操作,下面是一个语句触发器的案例: 案例2、比如今天是12月...四、DDL类型触发器 Oracle DDL类型触发器主要是对于Oracle数据库的DDL操作触发的触发器,主要包括create、drop、alter等DDL事件,经常利用DDL类型触发器记录DDL操作记录或者限定对某个对象进行...Oracle DDL类型触发器的语法结构 DDL类型触发器的编写语法如下:create [ or replace] trigger tr_name(触发器名) before|after ddl_event...下面通过一个案例来解析Oracle DDL类型触发器的写法: 案例1、利用Oracle DDL类型触发器给学生信息表(stuinfo)做一个禁止删除、修改表结构的触发器,代码如下:create or replace

    2.2K30

    java switch case 语句

    语法: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句...从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。 switch 语句可以拥有多个 case 语句。...每个 case 后面跟一个要比较的值和冒号。 case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。...当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。 当遇到 break 语句时,switch 语句终止。...程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句

    1.4K20

    Mysql的 If和 Case语句

    if语句 在查询中使用if,语法如下: if('表达式','真值','假值'). 比如在数据中库存储的性别字段为1或者0,查询时想获取男,女....case语句 当两种选择是可以使用if,有多种选择的时候就需要case语句了....比如在上例子中,我们存储了一些不希望暴露性别的用户,存储的值为3.此时想要查询可以: select s.name '姓名', case s.sex when 1 then '男'...mysql的”\G”使用 在查询某个特别多字段的表的时候,输出的结果我们很难看明白,很想让字段名 和值一一对应来方便阅读,这时可以在语句末尾加上\G即可. 效果图: ?...联系邮箱:huyanshi2580@gmail.com 更多学习笔记见个人博客——>呼延十 var gitment = new Gitment({ id: 'Mysql的 If和 Case语句',

    3.4K10

    oracle中,通过触发器,记录每个语句影响总行数

    技术选择:      第一就想到触发器,这样能在不涉及业务系统的代码情况下,实现监控。触发器分为“语句触发器”和“行级触发器”。...语句级是每一个语句执行前后触发一次操作,如果我在每一个SQL语句执行后,把表名,时间,影响行写到记录表里就行了。      ...但问题来了,在语句触发器中,无法得到该语句的行数,sql%rowcount  在触发器里报错。只能用行级触发器去统计行数! 代码结构: 整个监控数据行的功能包含: 一个日志表,包,序列。...: 有了以上代码后,想要监控的一个目标表,只需要给它添加三个触发器,调用包里对应的存储过程即可。  ...需要给T_A添加三个触发器: --语句开始前 create or replace trigger tri_onb_t_a before insert or delete or update on t_a

    79920

    Oracle触发器

    每当一个特定的数据库操作语句(insert/update/delete)在指定的表上发出时,oracle自动执行触发器中定义的语句序列。...创建触发器的语法 CREATE | or REPLACE | TRIGGER 触发器名 {BEEFORE | AFTER } {DELETE | INSERT | (UPDATE | OF 列名) }...-- FOR EACH ROW 指明触发器的类型 触发器的类型 语句级的触发器 在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。...行级触发器 触发语句作用的每一条记录都被触发。在行级触发器中使用:old和:new 伪记录变量,识别值得状态。...:old和:new 代表 同一条记录 :old 表示操作改行之前的,这一行的值 :new 表示操作改行之后的,这一行的值 语句触发器:针对的是表 行级触发器:针对的是行

    97220

    oracle怎么使用触发器,Oracle触发器的使用

    Oracle触发器的使用 触发器是指存放在数据库中,并被隐藏执行的存储过程。...启动和关闭例程 Oracle错误信息 用户登陆和关闭会话 特定表和视图的DML操作 DDL语句 2、触发条件(可选) 触发条件是指使用when子句指定一个boolean表达式,当表达式返回true时,则执行触发器相应代码...但是在编写触发器执行代码时,需要注意一下限制: 触发代码大小不能超过32k,如果确实需要使用大量代码建立触发器,应该首先建立存储过程,然后在触发器中使用call语句调用存储过程。...触发器代码只能包括insert、update和delete语句,而不能包括DDL语句(create、drop、alert)和事务控制语句(commit,rollback和savepoint)。...如果有3个以上的表连接查询, 那就需要选择交叉表(intersection …… 1.在ORACLE中实现SELECT TOP N 由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用

    2.4K30

    JavaScript switch case语句详解

    JavaScript switch case语句详解 switch 语句专门用来设计多分支条件结构。与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高。...,如果相等,则执行其后的语句段,只有遇到 break 语句,或者 switch 语句结束才终止;如果不相等,则继续查找下一个 case。...switch 语句包含一个可选的 default 语句,如果在前面的 case 中没有找到相等的条件,则执行 default 语句,它与 else 语句类似。...示例2 case 子句可以省略语句,这样当匹配时,不管下一个 case 条件是否满足,都会继续执行下一个 case 子句的语句。下面示例演示了把普通会员和 VIP 会员合并在一起进行检测。...值"; } } console.log(oper (2,5,"*")); //返回10 default 语句case 语句简单比较如下: 语义不同:default 为默认项,case 为判例。

    42510

    流程控制-case语句

    一、条件循环语句-cas 在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。...1.1、case介绍 特点:根据给予的不同条件执行不同的代码块 比如你去相亲:你会在脑子里出现以下的预案: 第一眼看到对方父亲,你应该说:伯父好 第一眼看到对方母亲,你应该说:伯母好 第一眼看到对方奶奶...需要执行的语句 ;; 两个分号代表命令结束 pattern 2) command2 ;; pattern 3) command3...;; *) default,不满足以上模式,默认执行*)下面的语句 command4 ;; esac esac表示case语句结束 二、案例...语句介绍 视频:job-Nginx启动管理脚本 视频:函数与case知识图谱总结

    63030
    领券