当用户A,B存放数据到tableC的时候,会将用户A插入的数据的主键值和用户名一起存放到tableD去
即tableC(id(PK),name,pass)A用户插入(23,‘A1’,‘A2’)B用户插入(20,‘B1’,‘b2’)
触发器的作用是将(23,A)插入到表tableD去
mysql:
delimiter $$ --声明结束符号为“$$”
create trigger insert_user_t_trigger before insert on user_t
for each row
begin
declare keyFieldName varchar(50) ;
declare login_name varchar(50);
SELECT COLUMN_NAME into keyFieldName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME='user_t';
SELECT USER() into login_name ;
if (keyFieldName ='ID' and login_name= 'root@localhost' ) then
insert into u_t(key_id,key_name) values(new.id,login_name);
elseif ( keyFieldName ='USERNAME' and login_name= 'root@localhost' ) then
insert into u_t(key_id,key_name) values(new.USERNAME,login_name);
else
insert into u_t(key_id,key_name) values(new.password,login_name);
end if;
end $$
oracle:
create or replace trigger insert_user_t_trigger
after insert on user_t
for each row
declare
v_sql varchar2(1000) ;
keyFieldName varchar2(50) ;
login_name varchar2(50) ;
BEGIN
select c.column_name into keyFieldName from user_cons_columns c where c.table_name ='USER_T' and c.position is not null and rownum = 1;
select user into login_name from dual where rownum=1;
if inserting and keyFieldName ='ID' and login_name= 'SCOTT' then
insert into u_t(key_id,key_name) values(:new.id,login_name);
elsif inserting and keyFieldName ='USERNAME' and login_name= 'SCOTT' then
insert into u_t(key_id,key_name) values(:new.username,login_name);
elsif inserting and keyFieldName ='PASSWORD' and login_name= 'SCOTT' then
insert into u_t(key_id,key_name) values(:new.password,login_name);
end if;
end insert_user_t_trigger;
sqlserver:
create trigger insert_user_t_trigger on user_t
for insert
as
declare @keyFieldName varchar(50) ,@login_name varchar(50),@id varchar(50),@USERNAME varchar(50),@PASSWORD varchar(50);
SELECT @keyFieldName=COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME='user_t';
SELECT @login_name= SUSER_NAME() ;
if (@keyFieldName ='ID' and @login_name= 'sa' )
begin
select @id=id from inserted;
insert into u_t(key_id,key_name) values(@id,@login_name);
end
else if( @keyFieldName ='USERNAME' and @login_name= 'sa' )
begin
select @USERNAME=USERNAME from inserted;
insert into u_t(key_id,key_name) values(@USERNAME,@login_name);
end
else
begin
select @PASSWORD=PASSWORD from inserted;
insert into u_t(key_id,key_name) values(@PASSWORD,@login_name);
end;