一个触发器的问题(IronPromises请也进来看看)

师兄:
碰到这样一个问题:有表ticket_issue_detail(有一个字段serial_no)、表in_channel(有字段note_no、canchange),想做这样的处理:当表ticket_issue_detail插入一个记录时就相应地修改表in_channel中note_no=serial_no的记录的canchange值。我写了以下的触发器:
CREATE trigger insert_isue on ticket_issue_detail for insert
as
begin
update in_channel set canchange='1' where note_no=(select serial_no from inserted )
end
可是却不能完成任务,如果把where后面不要就可以了,但是那样显然是修改了所有的记录。我想了很久也没看过这句SQL有什么错误,为什么会导致不能完成任务呢?如果触发器也有象存储过程那样的调试工具就好了。
请赐教谢谢。
---------------------------------------------------------------

CREATE trigger insert_isue on ticket_issue_detail for insert
as
begin
update in_channel set canchange='1' where note_no IN (select serial_no from inserted )
end

---------------------------------------------------------------

那就用参数吧。
CREATE trigger insert_isue on ticket_issue_detail for insert
as
declare @serial_no
selcet @serial_no =serial_no from inserted

update in_channel set canchange='1' where note_no=@serial_no
---------------------------------------------------------------

CREATE trigger insert_isue on ticket_issue_detail for insert
as
begin
update in_channel
set canchange='1'
FROM in_channel ,INSERTED
where in_channel.note_no=INSERTED.serial_no
end
应该可以的

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus