--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 中進行編寫。通過指定下列內容建立觸發器 建立觸發器 在 伺服器資源管理器 中,展開 表 資料夾。右擊要在其上建立觸發器的表名...