要取到值一般要用触发器的, create trigger trg_update_table on table for update as if update(data_field) select data_field from inserted
在存储过程里有办法取到update这条记录的被更新的这个字段的值吗? create procedure p_getdata @data varchar(50) output, @Name varchar(50), @id int as update A set Name=@Name where id=@id select @data=Name from A where id=@id go declare @data varchar(50) p_getdata @data output,'gggg',3 select @data
create trigger trg_update_table
on table for update
as
if update(data_field)
select data_field from inserted
create procedure p_getdata
@data varchar(50) output,
@Name varchar(50),
@id int
as
update A set Name=@Name where id=@id
select @data=Name from A where id=@id
go
declare @data varchar(50)
p_getdata @data output,'gggg',3
select @data
存储过程能取得trigger返回的值吗--沒試過
---不過用觸發器可以把你修改得數值存在另外一個表,再通過這個表給存儲過程接受
但这两个表均是逻辑表(虚拟表),只在触发器中有效.所以你可以在触发器中调用存储过程,把值传递给存储过程.如果你要在存储过程中获取,那通过什么来判断你调用存储过程的时候就一定触发了触发器呢?(sql的处理不是以毫秒计的,不能说你修改了记录后马上调用存储过程,存储过程就应该获取你更新的触发器中的内容,在这两个处理之间,sql会根据处理情况,可能插入其他处理).如果你的存储过程只是获得最新所有未处理过的触发器更新情况,可以建立一个触发器,把inserted和deleted逻辑表写入你的辅助处理表,存储过程读取辅助表进行处理,处理完成后,清理已经处理的数据.