各位大虾?触发器可不可以这样?

mignwoo 2003-05-21 06:17:32
在一个table上安一个trigger,这个trigger需要判断记录是什么才执行,也就是有选择的执行,因为记录有两种,分别由一个field来断定,1或0,当这个field为1时才执行这个trigger?帮帮我呀,我都是在菜鸟一个啊!!
...全文
24 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
没有人帮我吗?
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
可能有一点没有让大家理解,现在是:
这个触发器()安在“MSP_test1”这个表上,这个表中有一个field是MSP_flag,当这个MSP_flag为1时,执行trigger(trigger_test),这个trigger_test完成一个插入一行记录到另一个表中MSP_test2, 当MSP_flag为0时,就不执行这个trigger_test
xiyahui 2003-05-22
  • 打赏
  • 举报
回复
直接判断就可以了啊.
CREATE TRIGGER 名 ON 表
FOR UPDATE,INSERT
as
delcare @a int
select @a=field from inserted
if a=0

else

这样不可以吗
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
如何判断?
fangzhouyu 2003-05-22
  • 打赏
  • 举报
回复
你不管有没有条件,写好触发器,最后在触发器
的as下加一句判断field的语句
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
再加70分了!!!!!!!!!!!!!!!!!
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
没有人懂我吗?~~~~~~~~~~~~
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
CREATE TRIGGER [test_Insert] ON [dbo].[MSP_TASKS]
FOR INSERT
AS
Declare @FieldType bit
Declare Cursor cursor1 for select TASK_IS_MILESTONE from MSP_TASKS
Open cursor1
fetch cursor1 into @FieldType
Close cursor1

If @FieldType>0 Then

INSERT INTO MSP_TEST(MSP_TEST) VALUES("TEST1")

End If

提示错误:156 cusor附近有语法错误
triout 2003-05-22
  • 打赏
  • 举报
回复
Create Trigger InsTrigger On Table
For Insert
As
Declare @FieldType int
Declare Cursor cursor1 for select MSP_flag from inserted
Open cursor1
fetch cursor1 into @FieldType
Close cursor1
If @FieldType>0 Then
你的插入执行代码。
End If
mignwoo 2003-05-22
  • 打赏
  • 举报
回复
这样不对,你的程序这样执行:当MSP_test1记录集中有msp_flag='1'时就执行trigger_test,其实应该是当msp_test1中新增加的记录的msp_flag='1'时,才执行trgger_test
happydreamer 2003-05-22
  • 打赏
  • 举报
回复
CREATE TRIGGER trigger_test ON MSP_test1
FOR INSERT
AS

IF EXISTS (SELECT 1 FROM INSERTED WHERE MSP_flag='1')
BEGIN
INSERT MSP_test2 SELECT * FROM INSERTED
END

go
mignwoo 2003-05-21
  • 打赏
  • 举报
回复
还没有看明白呀~~~~~~~~~~~~~~``
dlkfth 2003-05-21
  • 打赏
  • 举报
回复
可以
pengdali 2003-05-21
  • 打赏
  • 举报
回复
create table 表 (a int,b int)
go
insert 表 values (1,2)
go
CREATE TRIGGER 名 ON 表
FOR UPDATE
AS
if update(a)
begin
select a 更新前a被删除的数据 from deleted
select a 更新后a被插入的数据 from inserted
end
if update(b)
begin
select a 更新前b被删除的数据 from deleted
select a 更新后b被插入的数据 from inserted
end
go
------------测试:
update 表 set a=3
-----------------
update 表 set b=4
mignwoo 2003-05-21
  • 打赏
  • 举报
回复
帮帮忙写个例子吧?多谢了~~~~~~~~~
fourfire29 2003-05-21
  • 打赏
  • 举报
回复
你在trigger刚开始,判断field,当field为0时return

22,209

社区成员

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

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