求助[Sql Server]数据库触发器
想实现这样的功能,当table1更新的时候,如果table1中的字段field1等于1的话,field6=北京,如果field2等于1的话field6=field6+上海...
想实现这样的功能,当table1 更新的时候,如果table1 中的字段field1等于1的话,field6=北京,如果field2等于1的话field6=field6+上海,以此类推,请问下面的代码正确么?是否可以实现此功能。
Creat Trigger Tri_table1
On table1 for update as if update
Begin
If field1=1 begin
field6=北京
End
If field2=1 begin
field6=field6+,上海
End
If field3=1
begin
field6= field6+,广州
End
If field4=1
begin
field6=field6+,重庆
End
end 展开
Creat Trigger Tri_table1
On table1 for update as if update
Begin
If field1=1 begin
field6=北京
End
If field2=1 begin
field6=field6+,上海
End
If field3=1
begin
field6= field6+,广州
End
If field4=1
begin
field6=field6+,重庆
End
end 展开
1个回答
展开全部
肯定不对喽,语法都不对了,“field6=北京 ”应为 set field6='北京'
当然肯定有实现的方法了。
以下是偶写的,仅供参考:
----创建表table1脚本(如果有可以省略)-----
create table table1
(id int,
field1 int,
field2 int,
field6 varchar(50)
)
Go
----------触发器脚本-----------------------
drop trigger Tri_table1
go
Create Trigger Tri_table1 On table1
for update as
begin
update table1 set field6=isnull(field6+',','')+'北京' where field1=1 and id=(select id from inserted)
update table1 set field6=isnull(field6+',','')+'上海' where field2=1 and id=(select id from inserted)
end
go
当然上面的代码还有BUG,如果重复修改,它就会重复添加“北京”“上海”等
,重点还在于逻辑思路!
当然肯定有实现的方法了。
以下是偶写的,仅供参考:
----创建表table1脚本(如果有可以省略)-----
create table table1
(id int,
field1 int,
field2 int,
field6 varchar(50)
)
Go
----------触发器脚本-----------------------
drop trigger Tri_table1
go
Create Trigger Tri_table1 On table1
for update as
begin
update table1 set field6=isnull(field6+',','')+'北京' where field1=1 and id=(select id from inserted)
update table1 set field6=isnull(field6+',','')+'上海' where field2=1 and id=(select id from inserted)
end
go
当然上面的代码还有BUG,如果重复修改,它就会重复添加“北京”“上海”等
,重点还在于逻辑思路!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询