日期:2014-05-17  浏览次数:20438 次

sql有生成订单表时导入订单日志表中
订单表中字段
dbo.tb_Order:
FBillNO, FNetBillNO, FCusNO, FPayStyle, FFetchStyle, FAddress, FCustName, FCustAddress, FCustTel, FNote, FTypeID, FDept, Fstatus, Isdel
订单日志中字段:
dbo.tb_Order_Log
NO, FBillNO, FName, FEvent, FTime, FNote

求一存储过程,在对订单表dbo.tb_Order做新增操作时,把新增的信息同时更新到订单日志表dbo.tb_Order_Log 其中,NO 为自动增长的,FTime为当前时间,FName为当前登录用户,FBillNO,FNote为dbo.tb_Order中信息,FEvent默认为空。字段类型都可以的,其中两表一致!

谢谢帮助,有正确答案就给分!!

------解决方案--------------------
应该是触发器,不是存储过程.
------解决方案--------------------
SQL code
--大致写法如下:

create trigger my_trig on tb_Order for insert
as
  insert into tb_Order_Log (FBillNO, FName, FTime, FNote )
  select FBillNO , 这个登录用户比较麻烦, getdate(),FNote from inserted
go

--最好表tb_Order加个登录用户字段,把登录用户写入tb_Order表。就可以这样:
create trigger my_trig on tb_Order for insert
as
  insert into tb_Order_Log (FBillNO, FName, FTime, FNote )
  select FBillNO , FName, getdate(),FNote from inserted
go

------解决方案--------------------
SQL code
使用触发器完成

create trigger t1
on dbo.tb_Order
for insert
as
begin
  insert into tb_Order_Log(FBillNO, FName, FTime, FNote )
  select FBillNO,user_name(),getdate(),FNote
  from isnerted
end

------解决方案--------------------
探讨
应该是触发器,不是存储过程.

------解决方案--------------------
探讨
SQL code--大致写法如下:createtrigger my_trigon tb_Orderforinsertasinsertinto tb_Order_Log (FBillNO, FName, FTime, FNote )select FBillNO , 这个登录用户比较麻烦,getdate(),FNotefrom insertedgo--最好表tb_Order加个登录用户字段,把登录用户?-

------解决方案--------------------
楼上的大虾都说了,如果单纯从数据库实现的话,那么最好是用触发器.但是如果有前台程序操作数据库那么可以用存储过程.
后者大体思路是,开启一个事务,然后先更新订单表,成功后接着更新日志表就可以了.存储过程分别写就可以应该.
------解决方案--------------------
探讨
楼上的大虾都说了,如果单纯从数据库实现的话,那么最好是用触发器.但是如果有前台程序操作数据库那么可以用存储过程.
后者大体思路是,开启一个事务,然后先更新订单表,成功后接着更新日志表就可以了.存储过程分别写就可以应该.

------解决方案--------------------
简单一点的也可以考虑 2005的output 

详情请参考http://blog.csdn.net/js_szy/archive/2009/11/30/4908948.aspx
------解决方案--------------------
create proc ins_order_log 
@fbillno int --输入单据号
.
. --各种输入参数
.
.
as
begin tran
declare @rerurn int
insert into tb_order(fbillno,......) select @fbillno......
if @@error<>0
begin
goto err
set @return=1
end
insert into tb_order_log(TBILLNO) select @TBILLMNO
err:
rollback tran
------解决方案--------------------
探讨
SQL code使用触发器完成createtrigger t1on dbo.tb_Orderforinsertasbegininsertinto tb_Order_Log(FBillNO, FName, FTime, FNote )select FBillNO,user_name(),getdate(),FNotefrom isnertedend

------解决方案--------------------
SQL code
--大致写法如下:

create trigger my_trig on tb_Order for insert
as
  insert into tb_Order_Log (FBillNO, FName, FTime, FNote )
  select FBillNO , 这个登录用户比较麻烦, getdate(),FNote from inserted
go

--最好表tb_Order加个登录用户字段,
--1
create trigger my_trig on tb_Order for insert
as
  insert into tb_Order_Log (FBillNO, FName, FTime, FNote )
  select FBillNO , user_name(), getdate(),FNote from inserted
go

--2
create trigger my_trig on tb_Order for insert
as
  insert into tb_Order_Log (FBillNO, FName, FTime, FNote )
  select FBillNO , SYSTEM_USER, getdate(),FNote from inserted
go