资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

oracle怎么建触发器,oracle触发器怎么用

oracle 写一个触发器,新手

创建两个表:

苏家屯ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

create table a

(stdid int,

stdname varchar2(10));

create table b

(stdid int,

stdname varchar2(10));

创建触发器:

CREATE OR REPLACE TRIGGER tr_insert

after insert

ON a

FOR EACH ROW

BEGIN

INSERT INTO b(stdid,stdname)

VALUES(:new.stdid,:new.stdname);

END;

验证,在a表中插入数据:

insert into a values (1,'a');

commit;

验证b表结果:

如果业务需要在插入前作判断

就是说  当且仅当 表A插入的 stdid在表C中存在  也就是说

表A新插入的的 stdid in   select stdid from C 时 才执行下面插入表B的动作

创建个c表

create table c

(stdid int);

插入一条数据:

insert into c values (1);

commit;

触发器修改为:

CREATE OR REPLACE TRIGGER tr_insert

after insert

ON a

FOR EACH ROW

declare  v_count int;

BEGIN

select count(*) into v_count from c where stdid =:new.stdid;

if v_count=0

then

INSERT INTO b(stdid,stdname)

VALUES(:new.stdid,:new.stdname);

end if;

END;

然后分别往a表中插入id=1和id=2的数据,剩下的自己验证吧, 不给你截图了

oracle 创建触发器问题

那个  PRAGMA AUTONOMOUS_TRANSACTION  的代码,  单独写到一个存储过程里面

然后触发器里面  ,   调用存储过程.

例如:

-- 获取当前流水号的存储过程.

CREATE OR REPLACE PROCEDURE GetNextSeqNo (

p_result IN OUT VARCHAR2

AS

-- 定义 “自治事务”

PRAGMA AUTONOMOUS_TRANSACTION;

-- 当前流水.

v_seq INT;

BEGIN

-- 查询.

SELECT 

current_seq INTO v_seq

FROM

test_month_seq

WHERE

year_month = TO_CHAR(sysdate, 'YYYYMM')

FOR UPDATE;

-- 更新.

UPDATE 

test_month_seq

SET

current_seq = current_seq + 1

WHERE

year_month = TO_CHAR(sysdate, 'YYYYMM');

-- 提交事务.

COMMIT;

-- 设置返回参数.

p_result := 'P' || TO_CHAR(sysdate, 'YYYYMM') || TRIM(TO_CHAR(v_seq, '000'));

END GetNextSeqNo;

/

-- 触发器.

CREATE OR REPLACE TRIGGER tr_test_seqno_2

BEFORE INSERT ON TEST_SEQNO

FOR EACH ROW

BEGIN

GetNextSeqNo(:new.SEQNO);

END;

/

如果你不需要  “自治事务”  的

简单删除掉

DECLARE

PRAGMA AUTONOMOUS_TRANSACTION;

和后面的  COMMIT;

Oracle创建触发器

create or replace trigger qwx_tri after insert

on QWXMX for each row

begin

insert into FEIYONG (qxdh) values(:new.qxdh)

end;

你写的不伦不类的,和sqlserver混淆了吧

Oracle触发器,求大神详细讲解

1

创建table1:

CREATE

TABLE

table1

(

id

number(5),

name

char(20),

age

number(2),

);

2

创建table2,并给count字段初值为0

CREATE

TABLE

table2

(

count

number(5),

);

INSERT

INTO

table2

VALUES

(0);

3

插入触发器

CREATE

OR

REPLACE

TRIGGER

add_after_insert

AFTER

INSERT

ON

table1

FOR

EACH

ROW

DECLARE

v_currentCount

number(5);

BEGIN

SELECT

count

INTO

v_currentCount

FROM

table2;

UPDATE

table2

SET

count

=

v_currentCount

+1;

END

4

删除触发器

CREATE

OR

REPLACE

TRIGGER

add_after_delete

AFTER

DELETE

ON

table1

FOR

EACH

ROW

DECLARE

v_currentCount

number(5);

BEGIN

SELECT

count

INTO

v_currentCount

FROM

table2;

UPDATE

table2

SET

count

=

v_currentCount

+1;

END

5

更新触发器

CREATE

OR

REPLACE

TRIGGER

add_after_update

AFTER

UPDATE

ON

table1

FOR

EACH

ROW

DECLARE

v_currentCount

number(5);

BEGIN

SELECT

count

INTO

v_currentCount

FROM

table2;

UPDATE

table2

SET

count

=

v_currentCount

+1;

END

oracle建立触发器 success with compilation error

1、oracle数据库中的触发器,insert into users values('05','trigger','普通','trigger','拥有一般权限');。

2、oracle数据库中的触发器(触发器dml删除三条记录后)delete from users where u_type='其他';。

3、oracle数据库中的触发器(替代触发器修改记录信息)。

4、oracle数据库中的触发器(触发器dml插入一条记录,日志之前)。

5、oracle数据库中的触发器delete orders where o_id='200708021850';。

6、oracle数据库中的触发器(触发器dml更新一条记录之前)。

Oracle如何创建触发器

一般在sqlplus或者其他第三方oracle工具中,按照语法及需求写好代码,直接执行创建过程即可。

一般语法如下:

CREATE [OR REPLACE] TRIGGER trigger_name

{BEFORE | AFTER }

{INSERT | DELETE | UPDATE [OF column [, column …]]}

[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]

ON [schema.]table_name | [schema.]view_name 

[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]

[FOR EACH ROW ]

[WHEN condition]

PL/SQL_BLOCK | CALL procedure_name;


分享题目:oracle怎么建触发器,oracle触发器怎么用
标题链接:http://cdkjz.cn/article/hoigdp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220