急急急!!!求一简单update触发器!

fainting 2005-07-27 09:01:29
我有两张表
userlist内容如下:
userid 主键
username

newsuserlist内容如下:
id 主键
userlist

这两个表只有userlist一列相同

我现在想在userlist表上建立一个UPDATE触发器,使userlist中userid字段更新时,newsuserlist表中的等值userid也相应更新



恳求各位了,搞了一晚了都没搞出来!!!!!!!!!!!郁闷啊,我是菜鸟:(
...全文
259 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
天地客人 2005-08-10
  • 打赏
  • 举报
回复
做个触发器,可以实现啊!
zengzhengliang 2005-08-10
  • 打赏
  • 举报
回复
强,顶一下
那有那么麻烦.对于你这个情况来说.
用级连修改就可以了。
前面一个大哥提到过.
能少用触发器就少用吧.
很好资源的.而且容易出错.
comwin 2005-08-10
  • 打赏
  • 举报
回复
我追问一句:为什么这样可以
declare @UserID nvarchar(20),@old_UserID nvarchar(20)
select @UserID=UserID from inserted
select @old_UserID=UserID from deleted
update NewsUserList set UserID=@UserID where UserID=@old_UserID

下面就不可以呢?
update NewsUserList set UserID=UserID from inserted where UserID=UserID from deleted
为什么一定要用变量过度一下?
summerICEREDTEA 2005-08-10
  • 打赏
  • 举报
回复
--vianfdlpw()
--newsuserlist中设置userid外键引用userlist中的userid并设置on update cascade就可以了
级联 昨天刚看过:)
哈哈 2005-08-10
  • 打赏
  • 举报
回复
收藏
vivianfdlpw 2005-07-27
  • 打赏
  • 举报
回复
newsuserlist中设置userid外键引用userlist中的userid并设置on update cascade就可以了
fainting 2005-07-27
  • 打赏
  • 举报
回复




对不起啊,大伙!我复制错了数据,请原谅!!!


我有两张表

userlist内容如下:
userid 主键
username

newsuserlist内容如下:
id '主键
userid

这两个表只有userid一列相同

我现在想在userlist表上建立一个UPDATE触发器,使userlist中userid字段更新时,newsuserlist表中的等值userid也相应更新






不过,一个朋友给出了答案,我试了可以!!我把代码贴出来!!谢谢大家的热心,我还是会给大家分的:)


CREATE trigger tr3
on userlist
for update
as
declare @UserID nvarchar(20),@old_UserID nvarchar(20)
select @UserID=UserID from inserted
select @old_UserID=UserID from deleted
update NewsUserList set UserID=@UserID where UserID=@old_UserID


phantomMan 2005-07-27
  • 打赏
  • 举报
回复
不知道是不是符合你的要求:

--建表
create table userlist(
userid int identity,
username varchar(10),
age bit,
adrress varchar(50)
)
go
create table newsuserlist(
userid int identity,
username varchar(10),
age bit,
adrress varchar(50)
)
go
--插入数据
insert into userlist values('旺东',1,'三等功哈')
insert into userlist values('阿才',0,'阿瑟疯掉疯掉撒')
insert into userlist values('王五',1,'阿瑟风大送分')
insert into userlist values('张三',0,'阿 更好发福')
insert into userlist values('李四',1,'黄澄澄复活')

insert into newsuserlist values('旺东',1,'三等功哈')
insert into newsuserlist values('阿才',0,'阿瑟疯掉疯掉撒')
insert into newsuserlist values('王五',1,'阿瑟风大送分')
insert into newsuserlist values('张三',0,'阿 更好发福')
insert into newsuserlist values('李四',1,'黄澄澄复活')
go
--建立触发器
alter trigger tr_updatename on userlist
after update
as
begin
if @@rowcount=0
return --没有影响,则退出
if update(username)
update newsuserlist set username=deleted.username
from deleted
where deleted.userid=newsuserlist.userid
end
go

update userlist set username='王五1'
where userid=3

select * from userlist
select * from newsuserlist

drop trigger tr_updatename
drop table userlist,newsuserlist

vivianfdlpw 2005-07-27
  • 打赏
  • 举报
回复
我上面写的方法要求你的userlist表除了被更新的userid字段外,还要有一个字段可以唯一标识每一行,比如:identity列
vivianfdlpw 2005-07-27
  • 打赏
  • 举报
回复
--创建测试环境
create table userlist(ID int identity,userid varchar(20) primary key,username varchar(20))
create table newsuserlist(id int primary key,userlist varchar(200))
insert userlist(userid,username)
select 'A001','张三' union
select 'A002','李四' union
select 'A003','王五' union
select 'A004','赵明'

insert newsuserlist
select 101,'A001,A003' union
select 103,'A004,A006' union
select 105,'A001' union
select 150,'A001,A002'
--创建触发器
if exists(select 1 from sysobjects where id=object_id('tr') and xtype='TR')
drop trigger tr
go
create trigger tr
on userlist
for update
as
if update(userid) and not update(ID)
begin
update newsuserlist
set userlist=reverse(stuff(reverse(stuff(replace(','+A.userlist+',',','+D.userid+',',','+I.userid+','),1,1,'')),1,1,''))
from newsuserlist A
join deleted D on charindex(','+D.userid+',',','+A.userlist+',')>0
join inserted I on D.ID=I.ID
end
go

--测试
update userlist set userid='BBBB' where userid='A001'

select * from userlist
select * from newsuserlist

--删除测试环境
drop table userlist,newsuserlist

--结果
/*

ID userid username
----------- -------------------- --------------------
2 A002 李四
3 A003 王五
4 A004 赵明
1 BBBB 张三

(所影响的行数为 4 行)

id userlist
----------- -------------------------------
101 BBBB,A003
103 A004,A006
105 BBBB
150 BBBB,A002

(所影响的行数为 4 行)
*/
phantomMan 2005-07-27
  • 打赏
  • 举报
回复
把数据给完整点,没有看到你newsuserlist中存在userid:

我现在想在userlist表上建立一个UPDATE触发器,使userlist中userid字段更新时,newsuserlist表中的等值userid也相应更新
fainting 2005-07-27
  • 打赏
  • 举报
回复
大侠们,求求你们了,帮帮忙吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

34,593

社区成员

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

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