求触发器的写法!!

jx_401 2007-12-04 09:34:34
现有2表
A表 SysNO 张三 李四 王二麻子 时间
B表 SysNo 姓名 行为 时间
现在向表A中插入一条记录
1,上班,下班,午休,2007-12-4
我想把这条记录整理到表B里,
1,张三,上班,2007-12-4
2,李四,下班,2007-12-4
3,王二麻子,午休,2007-12-4
写一个触发器,自动实现,
请各位大侠帮帮忙!!

...全文
195 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
JL99000 2007-12-05
  • 打赏
  • 举报
回复
满足要求就可以 呵呵
中国风 2007-12-04
  • 打赏
  • 举报
回复
create table A
(SysNO int, 张三 varchar(10), 李四 varchar(10), 王二麻子 varchar(10), 时间 varchar(10))
go
create table B
(SysNo int identity(1,1), 姓名 varchar(10), 行为 varchar(10), 时间 varchar(10))

go
create trigger 触发器名 on A
instead of insert
as
begin
select * into # from inserted
insert A select * from #
declare @s nvarchar(4000)
set @s=''
select
@s=@s+' insert B select COL='+quotename(Name,'''')+','+quotename(Name)+',时间 from #'
from
syscolumns a
where
id=object_id('A') and Name not in('SysNO','时间') order by Colid asc

exec(@s)
end
go

insert into A
SELECT 1,'上班','下班','午休','2007-12-4'

go
select * from A
select * from B

--drop table a,b
SysNO 张三 李四 王二麻子 时间
----------- ---------- ---------- ---------- ----------
1 上班 下班 午休 2007-12-4

(所影响的行数为 1 行)

SysNo 姓名 行为 时间
----------- ---------- ---------- ----------
1 张三 上班 2007-12-4
2 李四 下班 2007-12-4
3 王二麻子 午休 2007-12-4

(所影响的行数为 3 行)


rouqu 2007-12-04
  • 打赏
  • 举报
回复
同意楼上
-狙击手- 2007-12-04
  • 打赏
  • 举报
回复
create table A
(SysNO int, 张三 varchar(10), 李四 varchar(10), 王二麻子 varchar(10), 时间 varchar(10))
go
create table B
(SysNo int identity(1,1), 姓名 varchar(10), 行为 varchar(10), 时间 varchar(10))

go
create trigger 触发器名 on A
after insert
as
begin
insert into B
select '张三',case when [张三]= 'shangban' then '上班' end,[时间] from inserted

union
select '李四',case when [李四]= 'xiaban' then '下班' end,[时间] from inserted

union
select '王二麻子',case when [王二麻子]= 'wuxiu' then '午休' end,[时间] from inserted
end

go
insert into A
SELECT 1,'shangban','xiaban','wuxiu','2007-12-4' union all
SELECT 1,'shangban','xiaban','wuxiu','2007-12-5'


select * from b

drop table a,b
/*

SysNo 姓名 行为 时间
----------- ---------- ---------- ----------
1 李四 下班 2007-12-4
2 李四 下班 2007-12-5
3 王二麻子 午休 2007-12-4
4 王二麻子 午休 2007-12-5
5 张三 上班 2007-12-4
6 张三 上班 2007-12-5

*/
jx_401 2007-12-04
  • 打赏
  • 举报
回复
如果插入A表的是shangban,xiaban,wuxiu
存储到B表时,转换为上班,下班,午休,且A表的某一列为空时,则B表中不存储对应的名字。
谢谢~~
fa_ge 2007-12-04
  • 打赏
  • 举报
回复
批量插入



create table A
(SysNO int, 张三 varchar(10), 李四 varchar(10), 王二麻子 varchar(10), 时间 varchar(10))
go
create table B
(SysNo int identity(1,1), 姓名 varchar(10), 行为 varchar(10), 时间 varchar(10))


create trigger 触发器名 on A
after insert
as
begin
insert into B
select '张三',[张三],[时间] from inserted

insert into B
select '李四',[李四],[时间] from inserted

insert into B
select '王二麻子',[王二麻子],[时间] from inserted
end


insert into A
SELECT 1,'上班','下班','午休','2007-12-4' union all
SELECT 1,'上班','下班','午休','2007-12-5'


select * from b

/*
SysNo 姓名 行为 时间
----------- ---------- ---------- ----------
1 张三 上班 2007-12-4
2 张三 上班 2007-12-5
3 李四 下班 2007-12-4
4 李四 下班 2007-12-5
5 王二麻子 午休 2007-12-4
6 王二麻子 午休 2007-12-5

(所影响的行数为 6 行)

*/



playwarcraft 2007-12-04
  • 打赏
  • 举报
回复
create trigger t1 on A
for insert
AS
insert into B
select 1,'張三',張三,时间 union all
select 2,'李四',李四,时间 union all
select 3,'王二麻子',王二麻子,时间
from inserted

GO
--但是不明白,A表這樣設計,以后人員變動咋辦?
fa_ge 2007-12-04
  • 打赏
  • 举报
回复


create table A
(SysNO int, 张三 varchar(10), 李四 varchar(10), 王二麻子 varchar(10), 时间 varchar(10))
go
create table B
(SysNo int identity(1,1), 姓名 varchar(10), 行为 varchar(10), 时间 varchar(10))


create trigger 触发器名 on A
after insert
as
begin
insert into B
select '张三',[张三],[时间] from inserted

insert into B
select '李四',[李四],[时间] from inserted

insert into B
select '王二麻子',[王二麻子],[时间] from inserted
end


insert into A
SELECT 1,'上班','下班','午休','2007-12-4'



select * from b

/*
SysNo 姓名 行为 时间
----------- ---------- ---------- ----------
1 张三 上班 2007-12-4
2 李四 下班 2007-12-4
3 王二麻子 午休 2007-12-4

(所影响的行数为 3 行)
*/
jx_401 2007-12-04
  • 打赏
  • 举报
回复
要的就是这个
dawugui 2007-12-04
  • 打赏
  • 举报
回复
具体没看.
对A表写一触发器,插入数据的同时,把数据对应插入B表不就行了?
中国风 2007-12-04
  • 打赏
  • 举报
回复
应该有一个UserName表(姓名表)
BIGSHOW-Killer 2007-12-04
  • 打赏
  • 举报
回复
在学习中。。。。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧