sql 触发器 的问题 在关键字 'update' 附近有语法错误。
createtriggerautoset_stuff_num/*新职员注册自动生成人员编号*/onstaff_infoforinsertasbegindeclare@re...
create trigger autoset_stuff_num /*新职员注册自动生成人员编号*/
on staff_info
for insert
as
begin
declare
@regnum tinyint,
@currentdate datetime,
@showcode varchar(10),
@year_code char(1),
@client_type_code char(2),
@len tinyint ,
@power char(2)
select @currentdate=getdate()
select top 1 @regnum=序号
from staff_info
where 部门=(select 部门 from inserted)
order by 序号 desc
if @regnum=null select @regnum=1
select @len=len(@regnum)
select @year_code=char(year(@currentdate)-2011+65)
set @client_type_code=case(select 权限 from inserted)
when('低') then 'LO'
when('中') then 'ME'
when('高') then 'HI'
when('最高') then 'SH'
end
select @showcode=(@client_type_code+@year_code+convert(varchar(2),month(@currentdate))+convert(varchar(2),day(@currentdate))+
case when @len<3 then replicate('0',3-len(@regnum)) else'' end+ convert(varchar(3),@regnum)
update stuff_info
set 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=(select 姓名 from inserted)
where 姓名 =(select 姓名 from inserted)
end 展开
on staff_info
for insert
as
begin
declare
@regnum tinyint,
@currentdate datetime,
@showcode varchar(10),
@year_code char(1),
@client_type_code char(2),
@len tinyint ,
@power char(2)
select @currentdate=getdate()
select top 1 @regnum=序号
from staff_info
where 部门=(select 部门 from inserted)
order by 序号 desc
if @regnum=null select @regnum=1
select @len=len(@regnum)
select @year_code=char(year(@currentdate)-2011+65)
set @client_type_code=case(select 权限 from inserted)
when('低') then 'LO'
when('中') then 'ME'
when('高') then 'HI'
when('最高') then 'SH'
end
select @showcode=(@client_type_code+@year_code+convert(varchar(2),month(@currentdate))+convert(varchar(2),day(@currentdate))+
case when @len<3 then replicate('0',3-len(@regnum)) else'' end+ convert(varchar(3),@regnum)
update stuff_info
set 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=(select 姓名 from inserted)
where 姓名 =(select 姓名 from inserted)
end 展开
5个回答
展开全部
先不说你脚本中的笔误
你在触发器里并没有对表2进行操作呀
update
表1
set
realname=@realname
where
uid=@uid
这个是你写错了吧?应该是表2才对。
你在触发器里并没有对表2进行操作呀
update
表1
set
realname=@realname
where
uid=@uid
这个是你写错了吧?应该是表2才对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--少了个括号,看我注释
select @showcode=(@client_type_code+@year_code+
convert(varchar(2),month(@currentdate)) --这里少括号
+convert(varchar(2),day(@currentdate))+
case when @len<3 then replicate('0',3-len(@regnum)) else'' end+ convert(varchar(3),@regnum)
select @showcode=(@client_type_code+@year_code+
convert(varchar(2),month(@currentdate)) --这里少括号
+convert(varchar(2),day(@currentdate))+
case when @len<3 then replicate('0',3-len(@regnum)) else'' end+ convert(varchar(3),@regnum)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update stuff_info
set 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=b.姓名
from stuff_info a inner join inserted b
on a.姓名 = b.姓名
set 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=b.姓名
from stuff_info a inner join inserted b
on a.姓名 = b.姓名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
UPDATE A stuff_info
SET 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=B.[姓名]
FROM stuff_info A JOIN inserted B ON (A.[姓名]=B.[姓名])
SET 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=B.[姓名]
FROM stuff_info A JOIN inserted B ON (A.[姓名]=B.[姓名])
追问
no 不行~
追答
UPDATE A SET 序号=@regnum,
注册日期=@currentdate,
人员编号=@showcode,
登录密码='0000',
用户名=B.[姓名]
FROM stuff_info A JOIN inserted B ON (A.[姓名]=B.[姓名])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把最外层的begin...end拿掉试试,结尾加个go
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询