导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

★关于MS-SQL触发器的问题

thhui 2007-12-18 09:41:43
表 Operatorlog :

logid category
1 登录
2 注销
3 登录
4 注销
(自动递增)
每当登录某个程序,这个表会自动生成两条记录。
我现在要写触发器,在 logid 最大时执行。


create trigger insert_end on operatorlog
for insert,update,delete
as
.
.
.
...全文
34 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
thhui 2007-12-18

ALTER trigger insert_end on operatorlog
for insert,update,delete
as

if exists(select * from operatorlog where logid=(select max(logid) from operatorlog) and category='注销')
begin
end



自己解决!!
回复
thhui 2007-12-18
if @logid = 4

但我在运行程序时,最大值会变化的!!!
回复
arrow_gx 2007-12-18


create trigger insert_end on operatorlog
for insert,update,delete
as
DECLARE @logid int
select @logid=inserted.logid
if @logid=4
begin
--这里插入你的代码
end
回复
thhui 2007-12-18
您理解错啦,

我只要那个判断条件怎么写??
下面要做的事我写了。
回复
LutzMark 2007-12-18
将 logid 定义为自增列
CREATE TRIGGER insert_end
ON operatorlog
for insert, update,delete
AS
DECLARE @logid int
select @logid =i.logid ,
@dlogid =d.logid ,
from operatorlog o
inner join inserted i on o.logid =i.logid
inner join deleted d on o.logid =d.logid
if update(logid)
IF NOT EXISTS (logid FROM Operatorlog WHERE logid = @logid )
insert into Operatorlog (cate_id,cate_name) select i.cate_id,i.cate_name FROM inserted i
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告