FOR INSERT
AS
update callpolicer_Temp set age=callpolicer_Temp.age+'岁' where callpolicer_Temp.age<>null --or callpolicer_Temp.age<>""
本来age 字段值是一个数字形式的如‘35’,我的目的是在插入后所有的age 字段值后加一个“岁”.
15 个解决方案
#1
好急用的,高手请快来!
#2
把“岁”加在表中是错误的!!
应该在前端或用SQL语句显示“岁”字.
应该在前端或用SQL语句显示“岁”字.
#3
CREATE TRIGGER change_age_tig ON [callpolicer_Temp]
FOR INSERT
AS
update callpolicer_Temp set age=callpolicer_Temp.age+'岁'
From inserted
where callpolicer_Temp.主键字段 = inserted.主键字段
and callpolicer_Temp.age<>null --or callpolicer_Temp.age<>""
FOR INSERT
AS
update callpolicer_Temp set age=callpolicer_Temp.age+'岁'
From inserted
where callpolicer_Temp.主键字段 = inserted.主键字段
and callpolicer_Temp.age<>null --or callpolicer_Temp.age<>""
#4
update callpolicer_Temp set age=callpolicer_Temp.age+'岁' where callpolicer_Temp.age Is Not Null;
#5
没有的,插入到callpolicer_Temp表中的值是我查询过滤到的,且在callpolicer_Temp表中的没必要设这个主键字段
#6
CREATE TRIGGER tr_age111 ON agetest
FOR INSERT
AS
update agetest set age=age+'岁' where age<>''
我试了,可以。。用单引号
FOR INSERT
AS
update agetest set age=age+'岁' where age<>''
我试了,可以。。用单引号
#7
插入的值根本没改变,临时表如下:CREATE TABLE [dbo].[callpolicer_Temp] (
[casecode] [varchar] (18) NOT NULL ,
[name] [varchar] (20) NULL ,
[sex] [varchar] (4) NULL ,
[age] [numeric](10, 0) NULL ,
[identityname] [varchar] (20) NULL ,
[abodecause] [varchar] (30) NULL ,
[idcard] [varchar] (20) NULL ,
[nation] [varchar] (20) NULL ,
[tel] [varchar] (40) NULL ,
[stayaddress] [varchar] (60) NULL ,
[property] [varchar] (16) NULL
) ON [PRIMARY]
[casecode] [varchar] (18) NOT NULL ,
[name] [varchar] (20) NULL ,
[sex] [varchar] (4) NULL ,
[age] [numeric](10, 0) NULL ,
[identityname] [varchar] (20) NULL ,
[abodecause] [varchar] (30) NULL ,
[idcard] [varchar] (20) NULL ,
[nation] [varchar] (20) NULL ,
[tel] [varchar] (40) NULL ,
[stayaddress] [varchar] (60) NULL ,
[property] [varchar] (16) NULL
) ON [PRIMARY]
#8
Ylljony:
你的思维有问题.
你知不知道你的这个trigger几乎是对整张callpolicer_Temp表进行操作.
如果你的商务处理复杂一点,那么你不和inserted用主键关联势必会出错.
你的思维有问题.
你知不知道你的这个trigger几乎是对整张callpolicer_Temp表进行操作.
如果你的商务处理复杂一点,那么你不和inserted用主键关联势必会出错.
#9
casecode为案件编码,是找到所有某案件下的报案人与受害人记录插入此临时表中.更改上面的一行为[age] [varchar](10) NULL ,
#10
我的错误结果是在每一个要age字段下插入了三个"岁"。如“35岁岁岁”
#11
如果你的触发器就是这样的话.
那么, 是这样的,你的触发器每执行一次就加一个.
不信,你再执行一次就变成4个’岁’了,哈哈.
那么, 是这样的,你的触发器每执行一次就加一个.
不信,你再执行一次就变成4个’岁’了,哈哈.
#12
加上条件:
CHARINDEX('岁', age, 1)=0
CHARINDEX('岁', age, 1)=0
#13
所以一定要加上insert.key=callpolicer_Temp.key,保証每次加上的'歲'字都是加在最新插入的記錄上。
#14
多谢: nononono(null,null) !解决!
#15
这也用触发器?
别用滥了!
别用滥了!
#1
好急用的,高手请快来!
#2
把“岁”加在表中是错误的!!
应该在前端或用SQL语句显示“岁”字.
应该在前端或用SQL语句显示“岁”字.
#3
CREATE TRIGGER change_age_tig ON [callpolicer_Temp]
FOR INSERT
AS
update callpolicer_Temp set age=callpolicer_Temp.age+'岁'
From inserted
where callpolicer_Temp.主键字段 = inserted.主键字段
and callpolicer_Temp.age<>null --or callpolicer_Temp.age<>""
FOR INSERT
AS
update callpolicer_Temp set age=callpolicer_Temp.age+'岁'
From inserted
where callpolicer_Temp.主键字段 = inserted.主键字段
and callpolicer_Temp.age<>null --or callpolicer_Temp.age<>""
#4
update callpolicer_Temp set age=callpolicer_Temp.age+'岁' where callpolicer_Temp.age Is Not Null;
#5
没有的,插入到callpolicer_Temp表中的值是我查询过滤到的,且在callpolicer_Temp表中的没必要设这个主键字段
#6
CREATE TRIGGER tr_age111 ON agetest
FOR INSERT
AS
update agetest set age=age+'岁' where age<>''
我试了,可以。。用单引号
FOR INSERT
AS
update agetest set age=age+'岁' where age<>''
我试了,可以。。用单引号
#7
插入的值根本没改变,临时表如下:CREATE TABLE [dbo].[callpolicer_Temp] (
[casecode] [varchar] (18) NOT NULL ,
[name] [varchar] (20) NULL ,
[sex] [varchar] (4) NULL ,
[age] [numeric](10, 0) NULL ,
[identityname] [varchar] (20) NULL ,
[abodecause] [varchar] (30) NULL ,
[idcard] [varchar] (20) NULL ,
[nation] [varchar] (20) NULL ,
[tel] [varchar] (40) NULL ,
[stayaddress] [varchar] (60) NULL ,
[property] [varchar] (16) NULL
) ON [PRIMARY]
[casecode] [varchar] (18) NOT NULL ,
[name] [varchar] (20) NULL ,
[sex] [varchar] (4) NULL ,
[age] [numeric](10, 0) NULL ,
[identityname] [varchar] (20) NULL ,
[abodecause] [varchar] (30) NULL ,
[idcard] [varchar] (20) NULL ,
[nation] [varchar] (20) NULL ,
[tel] [varchar] (40) NULL ,
[stayaddress] [varchar] (60) NULL ,
[property] [varchar] (16) NULL
) ON [PRIMARY]
#8
Ylljony:
你的思维有问题.
你知不知道你的这个trigger几乎是对整张callpolicer_Temp表进行操作.
如果你的商务处理复杂一点,那么你不和inserted用主键关联势必会出错.
你的思维有问题.
你知不知道你的这个trigger几乎是对整张callpolicer_Temp表进行操作.
如果你的商务处理复杂一点,那么你不和inserted用主键关联势必会出错.
#9
casecode为案件编码,是找到所有某案件下的报案人与受害人记录插入此临时表中.更改上面的一行为[age] [varchar](10) NULL ,
#10
我的错误结果是在每一个要age字段下插入了三个"岁"。如“35岁岁岁”
#11
如果你的触发器就是这样的话.
那么, 是这样的,你的触发器每执行一次就加一个.
不信,你再执行一次就变成4个’岁’了,哈哈.
那么, 是这样的,你的触发器每执行一次就加一个.
不信,你再执行一次就变成4个’岁’了,哈哈.
#12
加上条件:
CHARINDEX('岁', age, 1)=0
CHARINDEX('岁', age, 1)=0
#13
所以一定要加上insert.key=callpolicer_Temp.key,保証每次加上的'歲'字都是加在最新插入的記錄上。
#14
多谢: nononono(null,null) !解决!
#15
这也用触发器?
别用滥了!
别用滥了!