觸發器學習《一》 簡單觸發器建立

2021-07-15 23:39:04 字數 3891 閱讀 7945

--1、建立表

create table userinfo(

id number(10,0) primary key,

name varchar2(40)

);--2、建立序列

create sequence userinfo_seq start with 1 maxvalue 9999999999 increment by 1;

--3、建立觸發器

create or replace

trigger userinfo_trigger

before insert on userinfo

for each row

begin

select userinfo_seq.nextval into :new.id from dual;

end ;

--4、插入資料

insert into userinfo(name) values('user1');

insert into userinfo(name) values('user2');

--5、檢視執行效果

select * from userinfo;

結合需求示例:

需求:動態取值,並同步另一張表中

create or replace trigger user_trigger_pro_test

after insert or update or delete on test_user_gj --注意after使用

for each row

declare

getname varchar(20);  

getstr varchar(20);         

begin

if inserting then

select name 

into getname from test_user_center where id=

:new.id; --注意賦值

insert into test_user_pf(user_id,user_name)

values(:new.id,

getname);

end if;

end;

測試 insert into test_user_center(id,name) values('a','aaa') -- 測試的時候,注先錄入這句話,否則會提示找不到資料的現象

insert into test_user_gj(id,name)values('a','aaagj4');

select * from test_user_gj;

select * from test_user_pf;

select * from test_user_center;

delete from test_user_gj;

delete from test_user_pf;

delete from test_user_center

drop trigger user_trigger_pro_test;

表建立

-- create table

create table test_user_gj

(id   nvarchar2(10),

name nvarchar2(10)

)tablespace plantform_data

pctfree 10

initrans 1

maxtrans 255

storage

(initial 64

next 1

minextents 1

maxextents unlimited

-- create table

create table test_user_pf

(user_id   nvarchar2(10),

user_name nvarchar2(10)

)tablespace plantform_data

pctfree 10

initrans 1

maxtrans 255

storage

(initial 64

next 1

minextents 1

maxextents unlimited

);-- create table

create table test_user_center

(id   nvarchar2(10),

name nvarchar2(10)

)tablespace plantform_data

pctfree 10

initrans 1

maxtrans 255

storage

(initial 16

next 8

minextents 1

maxextents unlimited

);示例:

示例一create or replace trigger test_user_trigger

before insert on test_user

for each row

begin

insert into userinfo select * from test_user

end ;

示例二create or replace trigger test_user_trigger

before insert on test_user

for each row

begin

if inserting then

insert into userinfo(id,name) 

values (5,'test');

end if;

end;

示例三create or replace trigger test_user_trigger

after insert or update or delete on test_user

for each row

begin

if deleting then

delete from userinfo where id=:old.user_id;

end if;

if inserting then

insert into userinfo(id,name)

values(:new.user_id,:new.user_name);

end if;

if updating then

update userinfo set name=:new.user_name where id=:old.user_id;

end if;

end;

示例四 create or replace trigger a_b_test

after insert or update or delete 

on a_test

for each row

begin

if deleting then

delete from b_test where id=:old.id;

end if;

if inserting then

insert into b_test(id,username,password) //b_test表的字段

values(:new.id,:new.name,:new.pass); //a_test表的字段

end if;

if updating then

update b_test set username=:new.name,password=:new.pass where id=:old.id;

end if;

end a_b_test;

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

建立觸發器

視覺化資料庫工具 對於 microsoft sql server 資料庫,可以在 transact sql 中編寫觸發器,而對於 oracle 資料庫,則可以在 pl sql 中進行編寫。通過指定下列內容建立觸發器 建立觸發器 在 伺服器資源管理器 中,展開 表 資料夾。右擊要在其上建立觸發器的表名...