并于触发器的问题!

HappyDelphiGirl 2003-10-22 05:00:31
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'TRI_Update_ClassInfo' AND type = 'TR')
DROP TRIGGER TRI_Update_ClassInfo
go

create trigger TRI_Update_ClassInfo
on ClassInfo_TMP
for insert
as
begin
declare @v_cnt int

set @v_cnt=( select count(*) from classinfo where class_seq= class_seq)

if @v_cnt=0
insert into classinfo(class_seq, class_type, class_name, manager)

--select class_seq,class_type,class_name,manager from inserted

else
update classinfo set class_type=Class_Type, class_name=class_name, manager=manager
where class_seq=class_seq


end

go

上面写的能通过, 但是在 ClassInfo表里只有最前面插入的一条记录, 请问我该怎么写?
...全文
21 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
HappyDelphiGirl 2003-10-22
  • 打赏
  • 举报
回复
我已解决
CREATE TRIGGER TRI_Update_ClassInfo
ON [dbo].[ClassInfo_TMP]
FOR INSERT
AS
declare @Seq Decimal;
declare @C_Type SmallInt;
declare @C_Name nvarchar(30);
declare @C_Manager nvarchar(12);
declare @Count smallint;
begin
set @Seq = (select Class_Seq from Inserted)
set @C_Type = (select Class_Type from inserted)
set @C_Name = (select Class_Name from inserted)
set @C_Manager = (select Manager from inserted)
set @Count = (select count(*) from ClassInfo where Class_Seq = @Seq)

if @Count = 0
insert into ClassInfo(Class_Seq, Class_Type, Class_Name, Manager) Values(@Seq, @C_Type, @C_Name, @C_Manager)
else
Update ClassInfo set Class_Type = @C_Type, Class_Name = @C_Name, Manager = @C_Manager where Class_Seq = @Seq
end
HappyDelphiGirl 2003-10-22
  • 打赏
  • 举报
回复
class_seq???是新插入的class_seq值, 请问我该如何取的这些值呢?
welyngj 2003-10-22
  • 打赏
  • 举报
回复
set @v_cnt=( select count(*) from classinfo where class_seq= class_seq)

where class_seq= class_seq???

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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